题目:http://acm.hdu.edu.cn/showproblem.php?pid=2104
题目大意:有N个人,围成一个圈,然后隔着M-1的人去找手绢,一直隔着M-1个人循环找下去下去,直到都能被遍历到。
质数:素数;
互质:两个数的最大公约数为“1”(不相等);
题解:只要N和M互为质数就可以;
运用知识:(辗转相除法)
自己错误想法:还以为不相等,不都是偶数或奇数就行,想错了。
总结:多想,多找规律,多写,理解好题意。(还是有点不理解,多记忆下吧)
int hs(int N,int M){ int temp; while(M!=0){ temp=M; M=N%M; N=temp; } return N;//只要N等于1,就互为质素。 }
代码:
#include<iostream> using namespace std; int hs(int N,int M){ int temp; while(M!=0){ temp=M; M=N%M; N=temp; } return N; } int main() { int N,M; while(cin>>N>>M){ if(M==-1&&N==-1) break; if(hs(N,M)!=1) cout<<"POOR Haha"<<endl; else cout<<"YES"<<endl; } return 0; }