hdu4002
来源:互联网 发布:德国骨科知乎 编辑:程序博客网 时间:2024/06/02 04:26
此题求1~n之间n/φ(n)最大的n,φ(n)=n/(1-i/p1)*(1-1/p2)······(1-1/pk);
n/φ(n)=p1/(p1-1) * p1/(p1-1) * ·······*pk/(pk-1);
所以得出n的素因子越多,n/φ(n)就越大。
而且最后结果一定是连续素数的乘积;
#include<cstdio>#include<cstring>#include<cstdlib>#include<cmath>#include<iostream>#include<string>using namespace std;int prime[1000];void isprime(){ for(int i=2;i<1000;i++) for(int j=i+i;j<1000;j+=i) prime[j]=1;}string operator *(string &a,string &b){ int sum[1200],i,j,num; int len1=a.length(); int len2=b.length(); memset(sum,0,sizeof(sum)); for(i=len2-1;i>=0;i--) //b for(j=len1-1,num=len2-1-i;j>=0;j--) //a { sum[num]+=(b[i]-'0')*(a[j]-'0'); sum[num+1]+=sum[num]/10; sum[num]%=10; num++; } while(sum[num]==0) num--; string c; for(i=num;i>=0;i--) c+=(sum[i]+'0'); return c;}int main(){ isprime(); string aa[500]; char sa[120]; aa[0]="2"; int num=1,i; for(i=3;i<1000;i++) if(prime[i]==0) { string ss; sprintf(sa,"%d",i); ss=sa; aa[num]=aa[num-1]*ss; num++; } int ca; string ss; scanf("%d",&ca); while(ca--) { cin>>ss; for(i=0;i<num;i++) { if(aa[i].length()>ss.length()) break ; if(ss.length()>aa[i].length()) continue; if(aa[i]>ss) break; } cout<<aa[i-1]<<endl; } return 0;}
- hdu4002
- HDU4002
- java 大数(hdu4002)
- hdu4002 Find the maximum 欧拉函数
- 【HDU4002】Find the maximum(打表大法好)
- The 36th ACM/ICPC Asia Regional Dalian Site —— Online Contest hdu4002
- jQuery 入门教程(24): jQuery UI Autocomplete示例(二)
- 有问题的最大堆
- Looper和Handler机制
- android下Binder机制
- 三言两语linux内核
- hdu4002
- mysql的查询、子查询及连接查询
- html中submit与button提交的区别
- 非阻塞io和IO多路转接
- 黑马程序员 java_IO流笔记(一)
- Journal of Guidance, Control, and Dynamics投稿经验分享
- github 学习和使用心得
- disable/enable validate/novalidate 的区别 (ORACLE)
- 网站相关性与排名问题