hdoj 1286 找新朋友
来源:互联网 发布:java 实现 ping ip 编辑:程序博客网 时间:2024/06/08 10:59
找新朋友
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 9387 Accepted Submission(s): 4974
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
22560824027
Sample Output
768016016
欧拉函数打表:
代码:
#include<stdio.h>#include<string.h>#define size 40000int Euler[size];void euler(){ int i,j; memset(Euler,0,sizeof(Euler)); Euler[1]=1; for(i=2;i<size;i++)//打表求欧拉函数 { if(!Euler[i]) for(j=i;j<size;j+=i) { if(!Euler[j]) Euler[j]=j; Euler[j]=Euler[j]/i*(i-1); } }}int main(){ int n,m ; scanf("%d",&n); while(n--) { euler(); scanf("%d",&m); printf("%d\n",Euler[m]); }}直接针对性的求,不打表:
代码:
#include<stdio.h>#include<string.h>#define size 40000int euler(int n){ int i,j; int ret=n; for(i=2;i*i<=n;i++) { if(n%i==0) { ret=ret/i*(i-1);//先除后乘,防止溢出 while(n%i==0) n/=i; } }if(n>1) ret=ret/n*(n-1); return ret;}int main(){ int n,m ; scanf("%d",&n); while(n--) { scanf("%d",&m); printf("%d\n",euler(m)); }}
0 0
- HDOJ 1286 找新朋友
- hdoj 1286 找新朋友
- hdoj 1286 找新朋友
- hdoj-1286-找新朋友
- hdoj 1286找新朋友
- hdoj 1286 找新朋友
- hdoj 1286 找新朋友
- HDOJ 1286 找新朋友
- HDOJ 1286找新朋友
- hdoj-【1286 找新朋友】
- hdoj找新朋友
- hdoj 1286 找新朋友【水】
- hdoj.1286 找新朋友 20140724
- hdoj 1286 找新朋友(求欧拉函数)
- HDOJ 题目1286找新朋友(打表,水题)
- hdoj 1286 找新朋友 【数论之欧拉函数】
- hdoj 1286 找新朋友(欧拉函数)
- HDOJ 1286 找新朋友(欧拉函数)
- android中Intent的用法总结
- 遗传算法
- Nginx配置及配置加载
- 如何完成看似不可能完成的任务 [Y]
- Android学习0826<八>(GridView、Spinner、AutoCompleteTextView、Gallery、ExpandableListView)
- hdoj 1286 找新朋友
- HDU 4690 EBCDIC(水题,练仔细)
- 【解决】SSH项目问题(2)--java.lang.NoSuchMethodError: antlr.collections.AST.ge
- mysql数据库导出导入
- iOS遍历数组相同值元素到另一数组中同一对象的子数组
- BZOJ1055
- Linux rz和sz命令详解
- GridView、AutoTextView、Spinner、Gallery、ExpandableListView
- python多进程编程