杭电2014

题目: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;
}

猜你喜欢

转载自blog.csdn.net/qq_40728285/article/details/80229518