巴蜀 2904 MMT数
2016-09-26 17:16
197 查看
2904 – 【模拟试题】MMT数
Description
FF博士最近在研究MMT数。
如果对于一个数n,存在gcd(n,x)<>1并且n mod x<>0 那么x叫做n的MMT数,显然这样的数可以有无限个。
FF博士现在想知道在所有小于n的正整数里面有多少个n的MMT数。
Input
仅一行一个数为n。
Output
输出所有小于n的正整数里面有多少个n的MMT数。
Sample Input
10
Sample Output
3
Hint
【样例解释】
3个数分别是 4 6 8,gcd(n,x)的意思是求n和x的最大公约数。
【数据范围】
对于50%的数据 n<=1000000
对于100%的数据n<=maxlongint
【分析】
先求出与n互质的数,再将n唯一分解求约数,将n减去求出的以上两个数再加一就是答案(因为1被减了两次)
【代码】
Description
FF博士最近在研究MMT数。
如果对于一个数n,存在gcd(n,x)<>1并且n mod x<>0 那么x叫做n的MMT数,显然这样的数可以有无限个。
FF博士现在想知道在所有小于n的正整数里面有多少个n的MMT数。
Input
仅一行一个数为n。
Output
输出所有小于n的正整数里面有多少个n的MMT数。
Sample Input
10
Sample Output
3
Hint
【样例解释】
3个数分别是 4 6 8,gcd(n,x)的意思是求n和x的最大公约数。
【数据范围】
对于50%的数据 n<=1000000
对于100%的数据n<=maxlongint
【分析】
先求出与n互质的数,再将n唯一分解求约数,将n减去求出的以上两个数再加一就是答案(因为1被减了两次)
【代码】
//巴蜀 2904 MMT数 #include<iostream> #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> #define M(a) memset(a,0,sizeof a) #define fo(i,j,k) for(i=j;i<=k;i++) using namespace std; const int mxn=1e5; int n,sum=1,phi; int pri[mxn+5]; bool vis[mxn+5]; inline void del() { int i,j; fo(i,2,mxn) { if(!vis[i]) pri[++pri[0]]=i; fo(j,1,pri[0]) { if(i*pri[j]>mxn) break; vis[i*pri[j]]=1; if(i%pri[j]==0) break; } } int x=n;phi=n; for(i=1;i<=pri[0] && pri[i]<=x;i++) { int cnt=0; if(n%pri[i]==0) phi=phi/pri[i]*(pri[i]-1); //欧拉函数定义式 while(x%pri[i]==0) x/=pri[i],cnt++; sum*=(cnt+1); } if(x>1) sum*=2,phi=phi/x*(x-1); sum+=phi; } int main() { int i,j; scanf("%d",&n); del(); printf("%d\n",n-sum+1); return 0; }
相关文章推荐
- Odoo ORM API (二)- Creating Models、Compatibility between new API and old API
- OpenGL系列教程之十一:OpenGL网格化
- AndroidStudio 提示NDK的问题
- Cacti监控服务器配置教程(基于CentOS+Nginx+MySQL+PHP环境搭建)
- iOS 设置navigationBar背景
- 使用 ArcGIS中的ArcObjects进行二次开发
- JavaScript中的对象冒充
- 解决_java.sql.SQLException: Your password has expired.
- OpenGL系列教程之十:OpenGL帧缓冲区对象(FBO)
- 原生js解决微信在iOS上无法修改title的问题
- 根据FPKM将基因分组
- 带蓝色的紫罗兰色——五色配色篇
- C++ 面向对象程序设计上机练习三(有默认参数的函数)
- SpringMVC
- c++基础面试题总结
- 环境映射
- SpringBoot中实现拦截器级别的URl访问过快拦截,并利用JPA实现IP黑名单的功能。
- vc小知识2
- Spring事务配置的五种方式
- [置顶] 12 张图教你傻瓜式配置caffe (Ubuntu14.04 安装CUDA7.5 + Caffe + cuDNN)