没有简单模拟的题解吗,我来!

_Cloud_

2020-03-20 22:05:27

Personal

就是普普通通定义变量a,b; 然后暴力穷举,有一个归零就退出。 #### 如何判重? 也很简单:直接暴力穷举10000次,当a,b都不为0时,输出error,退出。 因为:余数一共才10001个,余数为0不计,一共10000个,最坏的情况也就是1-10000不重复的走了一遍,但是一旦超过,根据[抽屉原理](https://baike.baidu.com/item/%E6%8A%BD%E5%B1%89%E5%8E%9F%E7%90%86/233776?fr=aladdin),一定会有重复,所以直接输出error。 ## _Code_ : ```c #include <iostream> #include <cstdio> //本蒟蒻标配头文件 using namespace std; int main() { int t, mod; scanf ("%d%d", &t, &mod); while (t--) { int a, b; scanf ("%d%d", &a, &b); int k = 1; while (a != 0 && b != 0 && k <= 10000) //在a和b都不等于0的情况且循环次数小于10000枚举 { if (k % 2) a = (a + b) % mod; //奇数回合 else b = (a + b) % mod; // 偶数回合 k++; //回合递增,循环次数递增 } if (k > 10000)printf ("error\n"); //超过10000次,一定有重复 else { if (a == 0)printf ("1\n"); //谁先到0谁输出 else printf ("2\n"); } } return 0; //简短的代码结束了~ } ``` 如果还是不理解的话,欢迎私信~