codeforces679A_Bear and Prime 100 交互题

传送门

第一道交互题

题意

  电脑事先想好了一个数【2100】

  你会每次问电脑一个数是否是它想的那个数的因数

  电脑会告诉你yes或no
  
  至多询问20次
  最后要输出它想的数是质数还是合数

思路

  枚举<50的质数和4,925,49即可判断

  4925,49单独看作质数是这样方便判断2^2,3^2,...,9^2

 解释

  在使用多个输出函数连续进行多次输出时,有可能发现输出错误。

  因为下一个数据再上一个数据还没输出完毕,还在输出缓冲区中时,下一个printf就把另一个数据加入输出缓冲区,

  结果冲掉了原来的数据,出现输出错误。

  在 printf();后加上fflush(stdout);强制马上输出,避免错误。

fflush只能加于你的输出后 电脑的反馈前

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 char fb[5];
 5 int init[40] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 4, 9, 25, 49};
 6 
 7 int main() {
 8     int cnt = 0; bool flag = 1;
 9     for (int i = 0; i <= 18; ++i){
10         printf("%d\n", init[i]);
11         fflush(stdout);
12         scanf("%s", fb);
13         if (fb[0] == 'y') ++cnt;
14         if (cnt >= 2) {
15             flag = 0; break;
16         }
17     }
18     flag ? puts("prime") : puts("composite");
19     return 0;
20 }

猜你喜欢

转载自www.cnblogs.com/Fo0o0ol/p/10090005.html