链接

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. windows上安装python2和python3虚拟环境

    一.windows上安装 1.安装python 分别安装了Python2和Python3 python3.7默认安装目录 C:\Users\Administrator\AppData\Local\Pr ...

  2. [开源]OSharpNS 步步为营系列 - 2. 添加业务数据层

    什么是OSharp OSharpNS全称OSharp Framework with .NetStandard2.0,是一个基于.NetStandard2.0开发的一个.NetCore快速开发框架.这个 ...

  3. Elasticsearch搜索调优权威指南 (1/3)

    本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/qwkZKLb_ghmlwrqMkqlb7Q英文原文:https://qbox.io/blog/ela ...

  4. 分布式 master/slave 框架

    https://helix.apache.org/ https://stackoverflow.com/questions/16401412/apache-helix-vs-yarn https:// ...

  5. 什么是JavaBean?

    什么是JavaBean? 首先明确的是JavaBean是一种Java类,而且是一种特殊的.可重用的类. 必须具有无参数的构造器,所有的属性都是private的,通过提供setter和getter方法来 ...

  6. 大咖云集!Kubernetes and Cloud Native Meetup 深圳站开始报名!

    由阿里技术生态联合 CNCF 官方共同出品的 Kubernetes & Cloud Native Meetup 将在 8 月 31 日来到深圳.届时,阿里云.蚂蚁金服高级技术专家将携手来自国内 ...

  7. 一篇文章,带你玩转MVVM,Dapper,AutoMapper

    一.背景 由于现在做的项目都是采用WPF来进行UI设计,开发过程中都是基于MVVM来进行开发,但是项目中的MVVM并不是真正的把实体和视图进行解耦,而是将实体和视图完全融合起来,ViewModel只是 ...

  8. Winfrom中设置ZedGraph显示多个标题(一个标题换行显示)效果

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  9. MDT rules实用

    [Settings]Priority=DefaultProperties=MyCustomProperty [Default]OSInstall=YSkipBDDWelcome=YESSkipCapt ...

  10. RabbitMQ、RPC、SaltStack "贡"具的使用

    消息队列 使用队列的场景 在程序系统中,例如外卖系统,订单系统,库存系统,优先级较高 发红包,发邮件,发短信,app消息推送等任务优先级很低,很适合交给消息队列去处理,以便于程序系统更快的处理其他请求 ...