Codeforces Round #276 (Div. 2)A. Factory 数学+规律

a % m只有m种可能,若某个余数是之前出现过的,那么接下来的余数一定会陷入循环,故生产不会停止。由于只要出现0便会停止,由鸽巢原理,m次操作里面没有出现0的话,则第m次一定会得到1 ~ m - 1之间的数,则进入循环。所以只需检测m次操作中是否出现0即可

代码如下:

#include <cstdio>
using namespace std;

int main(){
	long long a;
	int m;
	bool stop = false;
	scanf("%I64d %d", &a, &m);
	for(int i = 0;i < m; i ++){
		int tmp = a % m;
		if(tmp == 0){
			stop = true;
            break;
		}
		a += tmp;
	}
	if(stop)
		printf("Yes\n");
	else
		printf("No\n");
	return 0;
}


你可能感兴趣的:(数学,codeforces)