1400*A. Factory
Examples
input
1 5
output
No
input
3 6
output
Yes
题意:
a 和 m,a 不断加 a%m ,如果 a 有一次能够被 m 整除,则打印 Yes,如果一直循环永远不可能被 m 整除,则打印 No
解析:
可以观察到,a%m 每次的值有可能形成循环,如a=1,m=5,则 a%m 的取值为 1,2,4,3,1,2.....形成了循环,所以打印 No,如果有一次a%m==0,则为Yes
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
int a,m;
int main(){scanf("%d%d",&a,&m);set<int>s;while(1){if(a%m==0){puts("Yes");return 0;}int t=a%m;if(s.count(t)){puts("No");return 0;}s.insert(t);a+=t;}puts("YES");return 0;
}