1. 程式人生 > >codeforces679A_Bear and Prime 100 互動題

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 }