链接

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 欧拉函数的更多相关文章

  1. hdu2588 GCD (欧拉函数)

    GCD 题意:输入N,M(2<=N<=1000000000, 1<=M<=N), 设1<=X<=N,求使gcd(X,N)>=M的X的个数.  (文末有题) 知 ...

  2. BZOJ 2705: [SDOI2012]Longge的问题 [欧拉函数]

    2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 2553  Solved: 1565[Submit][ ...

  3. BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 4436  Solved: 1957[Submit][Status][Discuss ...

  4. COGS2531. [HZOI 2016]函数的美 打表+欧拉函数

    题目:http://cogs.pw/cogs/problem/problem.php?pid=2533 这道题考察打表观察规律. 发现对f的定义实际是递归式的 f(n,k) = f(0,f(n-1,k ...

  5. poj2478 Farey Sequence (欧拉函数)

    Farey Sequence 题意:给定一个数n,求在[1,n]这个范围内两两互质的数的个数.(转化为给定一个数n,比n小且与n互质的数的个数) 知识点: 欧拉函数: 普通求法: int Euler( ...

  6. 51Nod-1136 欧拉函数

    51Nod: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1136 1136 欧拉函数 基准时间限制:1 秒 空间限制: ...

  7. 欧拉函数 - HDU1286

    欧拉函数的作用: 有[1,2.....n]这样一个集合,f(n)=这个集合中与n互质的元素的个数.欧拉函数描述了一些列与这个f(n)有关的一些性质,如下: 1.令p为一个素数,n = p ^ k,则 ...

  8. FZU 1759 欧拉函数 降幂公式

    Description   Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,C<=1000 ...

  9. hdu 3307 Description has only two Sentences (欧拉函数+快速幂)

    Description has only two SentencesTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...

随机推荐

  1. CDN的智能调度,链路优化的详细解答

    您的用户在请求资源的过程中,可能受到网络.地域.带宽等影响,无法保证请求一定是按照最优访问路径进行传递,猫云 CDN 通过对全网链路进行实时监控,结合自研的 GSLB 调度体系和智能路由技术,从以下几 ...

  2. vue项目使用Ueditor富文本编辑器总结

    我使用的是前端大佬封装的vue-ueditor-wrap插件,结合ueditor本身的压缩包开发的. 1.下载vue-ueditor-wrap: npm install vue-ueditor-wra ...

  3. python threading Future源码解析

    1. Future内部还是用了condition这个锁 2. Cancel # future在执行时,会一直更新这个状态 def cancel(self): """Can ...

  4. linux 修改文件的时间属性

    二.修改文件时间 创建文件我们可以通过touch来创建.同样,我们也可以使用touch来修改文件时间.touch的相关参数如下: -a : 仅修改access time. -c : 仅修改时间,而不建 ...

  5. Django学习笔记(15)——中间件

    当Django处理一个Request的过程是首先通过中间件,然后再通过默认的URL方式进行的.我们可以在Middleware这个地方把所有Request拦截住,用我们自己的方式完成处理以后直接返回Re ...

  6. ConsoleColor原来有16种, enumData.GetValue(i)

    Console.WriteLine("Name:{0},Value:{0:D}", enumData.GetValue(i)); Name:Black,Value:0Name:Da ...

  7. asp.net 创建虚拟目录 iis创建虚拟目录

    这几天本人接了个档案管理查询系统的小项目,踩过的坑. 其实功能都挺简单的,大致要求客户有很多pdf文档,为了方便管理,所有要开发一个相当于文件管理系统,本人正好有现成的文件管理系统,修改下就可以.其中 ...

  8. vue 上传进度显示

    参考资料: https://ask.csdn.net/questions/767017 https://www.cnblogs.com/best-fyx/p/11363506.html 我使用的是el ...

  9. Windows Service 服务搭配FluentScheduler实现定时任务调度

    Windows Service 服务 创建Windows Service 项目 创建一个Windows Service项目,并将项目名称改为 TaskWindowService 在解决方案资源管理器内 ...

  10. laravel he stream or file "..laravel-2019-02-14.log" could not be opened: failed to open stream: Permission denied

    错误:The stream or file "/var/www/jianshu/storage/logs/laravel-2019-02-14.log" could not be ...