cf1208G Polygons 欧拉函数
链接
cf
给你两个正整数\(n\)和\(k\),询问在一个圆上你最少需要几个点构才能造出\(k\)个边数小于等于\(n\)的正多边形
思路
深受迫害,所以写的详细一点,不会请留言。
性质1
考虑加进一个\(x\)边形。那么他的因子\(d\)一定在他之前加进来了.
因为\(d\)可以完全由\(x\)的点表现出来。
如果没加\(d\),那么加\(d\)显然比加\(x\)优秀(显然)。
性质2
两个图形,让他们尽量多的重合些点是好的。
那两个图形能重合多少点呢?答案显然是固定的。
两个图形让他们一个点重合,即可得到最好的。
因为是正多边形,所以随便重合一个点,重合的情况都是一样的。
即最优的答案。
所以我们加入的\(k\)个正多边形都重合到一个点上,设这个点为\(0\)点。
联系起来
\(x\)在圆上,假设他的点为\(\frac{0}{x},\frac{1}{x}……\frac{x-1}{x}\)
由\(part2\)可以知道,0这个点上每个图形都会经过。
由\(part1\)可以知道\(x\)的点上,他的因子在之前就会加入,所以他的因子及其倍数都是原先就有的(被覆盖过)。
这个过程就是类似于暴力筛\(phi\)的过程,所以剩下的就是与他互质的数。
所以一个正\(x\)边形的贡献就是\(phi(x)\).
找出\(k\)个最小的\(phi\)就行了
其实这个题就是俄罗斯数学竞赛的题目....我同桌给我讲过类似的证明,忘记了(菜)。
代码
因为1,2不是正x边形,所以不能选为k变形
#include <bits/stdc++.h>
using namespace std;
const int _=1e6+7,limit=1e6;
int phi[_];
void Euler() {
for(int i=1;i<=limit;++i) phi[i]=i;
for(int i=2;i<=limit;++i) {
if(phi[i]==i) {
phi[i]=i-1;
for(int j=i+i;j<=limit;j+=i)
phi[j]=(phi[j]/i)*(i-1);
}
}
}
std::vector<int> ans;
int main() {
Euler();
int n,k;
cin>>n>>k;
if(k==1) return puts("3"),0;
for(int i=3;i<=n;++i) ans.push_back(phi[i]);
sort(ans.begin(),ans.end());
long long tot=0;
for(int i=0;i<k;++i) tot+=ans[i];
cout<<tot+2<<"\n";
return 0;
}
cf1208G Polygons 欧拉函数的更多相关文章
- hdu2588 GCD (欧拉函数)
GCD 题意:输入N,M(2<=N<=1000000000, 1<=M<=N), 设1<=X<=N,求使gcd(X,N)>=M的X的个数. (文末有题) 知 ...
- BZOJ 2705: [SDOI2012]Longge的问题 [欧拉函数]
2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 2553 Solved: 1565[Submit][ ...
- BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 4436 Solved: 1957[Submit][Status][Discuss ...
- COGS2531. [HZOI 2016]函数的美 打表+欧拉函数
题目:http://cogs.pw/cogs/problem/problem.php?pid=2533 这道题考察打表观察规律. 发现对f的定义实际是递归式的 f(n,k) = f(0,f(n-1,k ...
- poj2478 Farey Sequence (欧拉函数)
Farey Sequence 题意:给定一个数n,求在[1,n]这个范围内两两互质的数的个数.(转化为给定一个数n,比n小且与n互质的数的个数) 知识点: 欧拉函数: 普通求法: int Euler( ...
- 51Nod-1136 欧拉函数
51Nod: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1136 1136 欧拉函数 基准时间限制:1 秒 空间限制: ...
- 欧拉函数 - HDU1286
欧拉函数的作用: 有[1,2.....n]这样一个集合,f(n)=这个集合中与n互质的元素的个数.欧拉函数描述了一些列与这个f(n)有关的一些性质,如下: 1.令p为一个素数,n = p ^ k,则 ...
- FZU 1759 欧拉函数 降幂公式
Description Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,C<=1000 ...
- hdu 3307 Description has only two Sentences (欧拉函数+快速幂)
Description has only two SentencesTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...
随机推荐
- 表演的艺术,妖尾回合制战斗系统客户端设计[Unity]
妖尾历经几年开发,终于在今年6月底顺利上线,笔者从2017年初参与开发,主要负责妖尾战斗系统开发.战斗作为游戏的核心玩法系统,涉及很多技术点,希望能借几篇文字,系统性总结MMORPG战斗系统的开发经验 ...
- 解决 Github 图片加载慢的问题
一.前言 本文主要介绍一种解决 Github 图片加载慢的方法,亲测有效. 笔者博客是使用 Github 作为图床,每次打开博客时的图片加载很慢或者根本加载不出来.这是因为 GitHub 的 CDN ...
- navcat搜索字符串方法
navcat搜索字符串方法右键点击数据库 查找字符串即可..
- [DP]Luogu 2014NOIP提高组 飞扬的小鸟题解
2014NOIP提高组飞扬的小鸟题解 题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一 ...
- mysql批量更新数据(性能优化)--第二种方式
Spring+Mybatis 手动控制事务 参考: https://blog.csdn.net/qq_41750175/article/details/87621170 public boolean ...
- WEB网站发布服务器IIS报错问题终极解决方案,查到问题点
4本次错误webservice发布新服务器后,出现此错误. 解决方法: 找到dmp文件 dmp文件是啥?自己百度.简单的说就是黑匣子,记录程序崩溃前的操作,那么如何找到这个黑匣子呢? 1.启动 Win ...
- netcore sdk版本选择
NetCore sdk并不是每个版本都支持VS2017工具,也不是每个版本的sdk版本号和Runtime版本号都一样,这就需要我们在创建某个版本的net core应用时注意: 使用不同版本的vs时需要 ...
- Spring Boot 使用 Log4j2 & Logback 输出日志到 EKL
文章目录 1.ELK 介绍 2.环境.软件准备 3.ELK 环境搭建 4.Spring Boot 配置示例 4.1.Log4j2 方式配置 4.2.Logback 方式配置 1.ELK 介绍 ELK ...
- Python requests库的使用(一)
requests库官方使用手册地址:http://www.python-requests.org/en/master/:中文使用手册地址:http://cn.python-requests.org/z ...
- 前端开发HTML5——基础标签
什么是HTML? HTML是HyperText Markup Language(超文本标记语言)的简写,他不是一种编程语言,而是一种标记语言,用于告诉浏览器如何构造你的页面.“超文本”就是指页面可以包 ...