結果

問題 No.1152 10億ゲーム
ユーザー LayCurseLayCurse
提出日時 2020-08-07 22:54:36
言語 C++17
(gcc 13.2.0 + boost 1.83.0)
結果
AC  
実行時間 62 ms / 2,000 ms
コード長 3,354 bytes
コンパイル時間 2,743 ms
コンパイル使用メモリ 209,064 KB
実行使用メモリ 24,396 KB
平均クエリ数 22.86
最終ジャッジ日時 2023-09-24 04:52:23
合計ジャッジ時間 8,408 ms
ジャッジサーバーID
(参考情報)
judge12 / judge14
このコードへのチャレンジ(β)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 57 ms
23,424 KB
testcase_01 AC 52 ms
24,312 KB
testcase_02 AC 54 ms
24,012 KB
testcase_03 AC 54 ms
23,640 KB
testcase_04 AC 52 ms
23,364 KB
testcase_05 AC 53 ms
23,448 KB
testcase_06 AC 54 ms
24,396 KB
testcase_07 AC 60 ms
23,652 KB
testcase_08 AC 53 ms
23,400 KB
testcase_09 AC 54 ms
23,388 KB
testcase_10 AC 54 ms
23,544 KB
testcase_11 AC 53 ms
24,204 KB
testcase_12 AC 53 ms
23,976 KB
testcase_13 AC 55 ms
23,700 KB
testcase_14 AC 55 ms
23,616 KB
testcase_15 AC 53 ms
23,976 KB
testcase_16 AC 54 ms
24,312 KB
testcase_17 AC 58 ms
23,436 KB
testcase_18 AC 55 ms
23,400 KB
testcase_19 AC 53 ms
24,300 KB
testcase_20 AC 54 ms
24,012 KB
testcase_21 AC 53 ms
24,348 KB
testcase_22 AC 55 ms
23,592 KB
testcase_23 AC 54 ms
24,012 KB
testcase_24 AC 58 ms
23,472 KB
testcase_25 AC 62 ms
23,592 KB
testcase_26 AC 58 ms
24,012 KB
testcase_27 AC 58 ms
23,880 KB
testcase_28 AC 56 ms
23,400 KB
testcase_29 AC 56 ms
23,376 KB
testcase_30 AC 53 ms
23,520 KB
testcase_31 AC 54 ms
23,868 KB
testcase_32 AC 56 ms
24,324 KB
testcase_33 AC 54 ms
23,640 KB
testcase_34 AC 53 ms
24,372 KB
testcase_35 AC 54 ms
24,336 KB
testcase_36 AC 57 ms
23,880 KB
testcase_37 AC 54 ms
23,352 KB
testcase_38 AC 57 ms
23,520 KB
testcase_39 AC 56 ms
24,396 KB
testcase_40 AC 59 ms
23,400 KB
testcase_41 AC 53 ms
23,484 KB
testcase_42 AC 53 ms
23,400 KB
testcase_43 AC 52 ms
23,832 KB
testcase_44 AC 53 ms
24,096 KB
testcase_45 AC 55 ms
23,508 KB
testcase_46 AC 52 ms
23,472 KB
testcase_47 AC 54 ms
24,372 KB
testcase_48 AC 52 ms
23,700 KB
testcase_49 AC 53 ms
24,012 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
template<class S, class T> inline S min_L(S a,T b){
  return a<=b?a:b;
}
template<class S, class T> inline S max_L(S a,T b){
  return a>=b?a:b;
}
int m2;
int m5;
int o2;
int o5;
int in2;
int in5;
void input(void){
  int x;
  scanf("%d",&x);
  in2 = in5 = 0;
  while(x%2==0){
    in2++;
    x/=2;
  }
  while(x%5==0){
    in5++;
    x/=5;
  }
}
void output(void){
  int cTE1_r3A, xr20shxY;
  int x = 1;
  for(cTE1_r3A=(0);cTE1_r3A<(m2);cTE1_r3A++){
    x *= 2;
  }
  for(xr20shxY=(0);xr20shxY<(m5);xr20shxY++){
    x *= 5;
  }
  printf("%d\n",x);
  fflush(stdout);
}
int main(){
  int mn;
  int mx;
  int fg = 0;
  input();
  {
    auto KrdatlYV = (in2);
    auto ao_dF3pO = ( in5);
    m2 = KrdatlYV;
    m5 = ao_dF3pO;
  }
  input();
  {
    auto tU__gIr_ = (in2);
    auto a2conNHc = ( in5);
    o2 = tU__gIr_;
    o5 = a2conNHc;
  }
  for(;;){
    if( (m2+m5+o2+o5)%2 == 0 ){
      mn =min_L(m2, m5);
      if(m2==7 && m5==9){
        m2 = m5 = 9;
      }
      else if(mn < 7 && m2==mn){
        m2++;
      }
      else if(mn < 7 && m5==mn){
        m5++;
      }
      else if(m2 > 7){
        m2--;
      }
      else{
        m5++;
      }
      output();
      if(m2==o2 && m5==o5){
        return 0;
      }
      input();
      {
        auto YREPHmFM = (in2);
        auto jZyWAPpY = ( in5);
        o2 = YREPHmFM;
        o5 = jZyWAPpY;
      }
      if(m2==o2 && m5==o5){
        return 0;
      }
      continue;
    }
    mx =max_L(abs(m2-o2), abs(m5-o5));
    if(m2+mx==o2){
      m2++;
    }
    else if(m2-mx==o2){
      m2--;
    }
    else if(m5+mx==o5){
      m5++;
    }
    else{
      m5--;
    }
    output();
    if(m2==o2 && m5==o5){
      return 0;
    }
    input();
    {
      auto ZIeRIny5 = (in2);
      auto iMWUTgY_ = ( in5);
      o2 = ZIeRIny5;
      o5 = iMWUTgY_;
    }
    if(m2==o2 && m5==o5){
      return 0;
    }
    continue;
  }
  return 0;
}
// cLay varsion 20200509-1

// --- original code ---
// int m2, m5, o2, o5;
// 
// int in2, in5;
// void input(void){
//   int x;
//   scanf("%d",&x);
//   in2 = in5 = 0;
//   while(x%2==0) in2++, x/=2;
//   while(x%5==0) in5++, x/=5;
// }
// 
// void output(void){
//   int x = 1;
//   rep(m2) x *= 2;
//   rep(m5) x *= 5;
//   printf("%d\n",x);
//   fflush(stdout);
// }
// 
// 
// {
//   int mn, mx, fg = 0;
// 
//   input();
//   (m2, m5) = (in2, in5);
//   input();
//   (o2, o5) = (in2, in5);
// 
//   for(;;){
//     if( (m2+m5+o2+o5)%2 == 0 ){
//       mn = min(m2, m5);
//       if(m2==7 && m5==9){
//         m2 = m5 = 9;
//       } else if(mn < 7 && m2==mn){
//         m2++;
//       } else if(mn < 7 && m5==mn){
//         m5++;
//       } else if(m2 > 7){
//         m2--;
//       } else {
//         m5++;
//       }
//       output();
//       if(m2==o2 && m5==o5) return 0;
//       input();
//       (o2, o5) = (in2, in5);
//       if(m2==o2 && m5==o5) return 0;
//       continue;
//     }
// 
//     mx = max(abs(m2-o2), abs(m5-o5));
//     if(m2+mx==o2){
//       m2++;
//     } else if(m2-mx==o2){
//       m2--;
//     } else if(m5+mx==o5){
//       m5++;
//     } else {
//       m5--;
//     }
//     output();
//     if(m2==o2 && m5==o5) return 0;
//     input();
//     (o2, o5) = (in2, in5);
//     if(m2==o2 && m5==o5) return 0;
//     continue;
//   }
// }
0