链接

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. ECMAScript 6.0 简要学习

    由于在学习vue的时候有许多自己不懂的语法,于是简单的学习一下ES6. 1.ES简介 ES6, 全称 ECMAScript 6.0 ,是 JavaScript 的下一个版本标准,2015.06 发版. ...

  2. vue.js过度&动画、混入&插件

    1.vue  过度动画 1.过度 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果.Vue 提供了内置的过渡封装组件,该组件用于包裹要实现过渡效果的组件. 语法格式: < ...

  3. Nginx自建SSL证书部署HTTPS网站

    一.创建SSL相关证书 1.安装Nginx(这里为了测试使用yum安装,实际看具体情况) [root@localhost ~]# yum install nginx -y #默认yum安装已经支持SS ...

  4. netCore3.0+webapi到前端vue(前端)

    前篇已经完成后端配置并获取到api连接 https://www.cnblogs.com/ouyangkai/p/11504279.html 前端项目用的是VS code编译器完成 vue 第一步 引入 ...

  5. 大一结业项目之一(C#晨曦超市管理系统 )

                                             C#晨曦超市管理系统                            我现是湖南工程职业技术学院大一的学生,很快 ...

  6. preventDefault, stopPropagation, return false -JS事件处理中的坑

    我们以一个文件上传ui重设计为例子来探讨这几个函数的区别: 其中的html代码如下: <div class="file-upload"> <input type= ...

  7. 微信和QQ可以关闭广告了,每次能关6个月

    微信和QQ可以关闭广告了,这次腾讯真的是良心了,虽然不能完全关闭,但是每次能关6个月,也能清静不少时间. 关闭地址:点击进入

  8. HttpHelper之我见

    前几月一直用一个Http的访问类去调用WebApi,说句实话最开始没觉有什么,一是技术老,二是觉得比较简单,但是最近我一直关注云开发和AI这块儿微软技术,看到云平台调用API大多类似,所以回想这个早年 ...

  9. Visual Studio 项目在修改项目版本时,使用 * 通配符报错

    CS8357  C# The specified version string contains wildcards, which are not compatible with determinis ...

  10. CPU体系结构(组成部分)

    在准备网络工程师考试,里面有些知识点是比较常考的.自己写这篇博客呢,当作是笔记吧,自己看一看也分享给大家一起学习. 这部分的内容就是讲CPU里面的组成结构以及各部分的功能. CPU的构成:CPU主要由 ...