杭电1014解题报告
2012-05-01 19:28
316 查看
说实话,杭电的题有点变态~~~~~~~对格式要求这样严格
本题表面是判断能不能取遍m的余数~~~~~~其实考的是互质~~~~
http://acm.hdu.edu.cn/showproblem.php?pid=1014
本题表面是判断能不能取遍m的余数~~~~~~其实考的是互质~~~~
#include<stdio.h> intmain() { longintSTEP,MOD; while(scanf("%ld%ld",&STEP,&MOD)!=EOF) { intk=1,count=1,M,N; longintseed[100000]; seed[0]=0; seed[k]=(seed[k-1]+STEP)%MOD; while(seed[k]!=seed[0]) { k++;//K应该在seed[k]=(seed[k-1]+STEP)%MOD前面自增 seed[k]=(seed[k-1]+STEP)%MOD; count++; } if(count==MOD) { printf("%10ld%10ldGoodChoice\n\n",STEP,MOD);//GoodChoice前面有4个空格,5个空格不给过的。
} else { printf("%10ld%10ldBadChoice\n\n",STEP,MOD);//而且必须2个\n,否则也不给过。悲催死. } } return0; }
以下是摘得大牛的代码,供参考~~~~~
#include<iostream> #include<iomanip> usingnamespacestd; inlineintprand(); intseed,step,mod; intmain() { inthead,tail,decreasor=0; while(cin>>step>>mod&&mod){ decreasor=0; seed=0; //第一个随机数 head=prand(); //在0到mod-1的范围内,所以整数的总和 for(inti=0;i<mod;i++) decreasor+=i; //减去第一个随机数 decreasor=decreasor-head; //如果是goodchoice,decreasor将在第二个重复周期前减至0 while(head!=(tail=prand())){ decreasor-=tail; } cout<<setw(10)<<step <<setw(10)<<mod <<""; if(decreasor) cout<<"BadChoice"; else cout<<"GoodChoice"; cout<<endl<<endl; } return0; } //随机数产生器 inlineintprand() { seed=(seed+step)%mod; returnseed; }
本题其实考察的是两个数的互质,如果两个数互质输出goodchoice否则输出badchoice
看透题就这样简单的爱当初做这道题我就没看透题。
相关文章推荐
- 杭电acm1014 hdu-acm-1014解题报告
- 杭电2000ASCII码排序解题报告
- Ural 1014 Product of Digits NYOJ 270 数的分解 解题报告
- 杭电acm1012 hdu-acm-1012解题报告
- 杭电ACM题 1036 Edge解题报告
- 杭电ACM hdu 1085 Holding Bin-Laden Captive! 解题报告(母函数)
- 杭电 1242 Rescue 解题报告
- 杭电 HOJ 1372 Knight Moves 解题报告
- 杭电OJ题 1056 HangOver解题报告
- 杭电2041解题报告
- POJ 1014 解题报告
- 杭电HDOJ 1002 解题报告
- 杭电2028解题报告
- 130723杭电ACM多校第一场解题报告
- 杭电ACM 2000->2099 100道题 详细解题报告出炉
- 杭电oj--2503 解题报告
- 杭电ACM hdu 1171 Big Event in HDU 解题报告(母函数)
- 杭电 1712 ACboy needs your help 解题报告
- 杭电 HOJ 1312 Red and Black 解题报告
- 杭电OJ题 1065 I Think I Need a Houseboat解题报告