HDU 1286.找新朋友【筛选法】【欧拉函数】【11月25】
2015-11-25 12:49
537 查看
找新朋友
Problem Description
新年快到了,“猪头帮协会”准备搞一个聚会,已经知道现有会员N人,把会员从1到N编号,其中会长的号码是N号,凡是和会长是老朋友的,那么该会员的号码肯定和N有大于1的公约数,否则都是新朋友,现在会长想知道究竟有几个新朋友?请你编程序帮会长计算出来。
Input
第一行是测试数据的组数CN(Case number,1<CN<10000),接着有CN行正整数N(1<n<32768),表示会员人数。
Output
对于每一个N,输出一行新朋友的人数,这样共有CN行输出。
Sample Input
Sample Output
这题我用的筛选法,还可以用欧拉函数的方法。看代码吧:
欧拉函数的方法如下:
用时0MS。
Problem Description
新年快到了,“猪头帮协会”准备搞一个聚会,已经知道现有会员N人,把会员从1到N编号,其中会长的号码是N号,凡是和会长是老朋友的,那么该会员的号码肯定和N有大于1的公约数,否则都是新朋友,现在会长想知道究竟有几个新朋友?请你编程序帮会长计算出来。
Input
第一行是测试数据的组数CN(Case number,1<CN<10000),接着有CN行正整数N(1<n<32768),表示会员人数。
Output
对于每一个N,输出一行新朋友的人数,这样共有CN行输出。
Sample Input
2 25608 24027
Sample Output
7680 16016
这题我用的筛选法,还可以用欧拉函数的方法。看代码吧:
#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <cmath> #include <algorithm> using namespace std; int f[35000],cn,n,ans; int main() { cin>>cn; while(cn--) { ans=0; memset(f,0,sizeof(f)); scanf("%d",&n); for(int i=2;i<n;i++) { if(n%i==0&&f[i]==0) { for(int j=i;j<n;j+=i)//一定有公约数i,筛掉 f[j]=1; } } for(int i=1;i<n;i++) { if(!f[i]) ans++; } cout<<ans<<endl; } return 0; }
欧拉函数的方法如下:
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<iostream> using namespace std; typedef long long LL; LL Eular( LL x ) { if( x == 0 ) return 0; LL res = 1, t = x; for(LL i = 2; i <= (LL)sqrt(1.*x); i++) { if( t%i == 0 ) { res *= (i-1); t /= i; while( t%i ==0 ) { res *= i; t /= i; } } if( t == 1 ) break; } if( t > 1 ) { res *= (t-1); } return res; } int main() { LL x; int N; scanf("%d", &N); while(N--) { scanf("%lld", &x); cout << Eular(x) << endl; } return 0; }
用时0MS。
相关文章推荐
- 使用database control配置数据库时 要求在当前oracle主目录中配置监听程序
- string类[],==等成员函数
- 2222
- Shell 常用命令
- 神奇的扑克牌游戏
- IE8下元素背景为透明时,hover事件失效的bug
- Linux下获得主机与域名-gethostbyname和gethostbyaddr
- MYSQL 名人博客
- CSS属性值一览
- 13款Linux运维比较实用的工具
- easyUI级联
- [LeetCode261] Graph Valid Tree
- 黑马程序员 JavaSE-09 Map
- Codeforces Round #333 (Div. 2)C. The Two Routes(最短路)
- poj 1061/2142 扩展的欧几里得(青蛙的约会/砝码称重)
- thinkphp中的where()方法
- 线程之wait与sleep的区别
- CSS入门(3)-background:transparent的作用
- undefined symbols for architecture x86_64
- 【解决方案】Cmder v1.2 解决 “profile.ps1”和"Join-Path"方法