CF485A 题解
题目分析:
这个题的题面看得有点复杂(可能只有我这个蒟蒻觉得),但其实只要仔细思考一下,很容易就发现,这题的意思就是输入一个数 $n$,然后再枚举多次,如果在枚举的时候发现了 $a%m==0$ 就直接输出 Yes
并且退出,否则 $a$ 一直加 $a%m$ ,如果枚举到最后,还是没有退出程序,就输出 No
题目难度:
个人认为在入门难度左右
做法分析:
在题目分析我们已经说到了是输入两个数 $n,m$,然后再枚举多次(我选的是 $m+100$,但在我看别的题解释,$m+10$ 也可以),如果在枚举的时候发现了 $ a%m==0 $ 就直接输出 Yes
并且退出,否则 $a$ 一直加 $a%m$ 。如果枚举完了还没有退出,就证明不会有停止生产的情况,输出 No
就好了。
完整代码:
#include<cstdio>
#include<iostream>
long long a,m; //注意,a,m 一定要用long long不然会爆
int i;
int main() {
scanf("%lld%lld",&a,&m); //输入,注意要用%lld
if(a%m==0) { //如果刚开始时就会停产,直接输出"Yes"
puts("Yes");
return 0;
}
for(i=1; i<=m+100; i++) { //暴力枚举多次
a+=a%m;
if(a%m==0) { //如果有a%m==0的情况,直接输出"Yes"
puts("Yes");
return 0; //记住要跳出
}
}
puts("No"); //枚举完了还没有退出,就输出"No"
}
希望本题解对大家有帮助,也感谢管理员百忙之中为我审核题解,谢谢!
2020/3/14 修改爆掉的LaTeX。