結果

問題 No.1152 10億ゲーム
ユーザー LayCurseLayCurse
提出日時 2020-08-07 22:50:47
言語 C++17
(gcc 12.3.0 + boost 1.83.0)
結果
TLE  
実行時間 -
コード長 3,404 bytes
コンパイル時間 2,722 ms
コンパイル使用メモリ 212,848 KB
実行使用メモリ 49,828 KB
平均クエリ数 0.02
最終ジャッジ日時 2024-07-17 05:05:26
合計ジャッジ時間 6,411 ms
ジャッジサーバーID
(参考情報)
judge1 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 93 ms
24,580 KB
testcase_01 TLE -
testcase_02 -- -
testcase_03 -- -
testcase_04 -- -
testcase_05 -- -
testcase_06 -- -
testcase_07 -- -
testcase_08 -- -
testcase_09 -- -
testcase_10 -- -
testcase_11 -- -
testcase_12 -- -
testcase_13 -- -
testcase_14 -- -
testcase_15 -- -
testcase_16 -- -
testcase_17 -- -
testcase_18 -- -
testcase_19 -- -
testcase_20 -- -
testcase_21 -- -
testcase_22 -- -
testcase_23 -- -
testcase_24 -- -
testcase_25 -- -
testcase_26 -- -
testcase_27 -- -
testcase_28 -- -
testcase_29 -- -
testcase_30 -- -
testcase_31 -- -
testcase_32 -- -
testcase_33 -- -
testcase_34 -- -
testcase_35 -- -
testcase_36 -- -
testcase_37 -- -
testcase_38 -- -
testcase_39 -- -
testcase_40 -- -
testcase_41 -- -
testcase_42 -- -
testcase_43 -- -
testcase_44 -- -
testcase_45 -- -
testcase_46 -- -
testcase_47 -- -
testcase_48 -- -
testcase_49 -- -
権限があれば一括ダウンロードができます

ソースコード

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( fg==0 || (m2+m5+o2+o5)%2 == 0 ){
      mn =min_L(m2, m5);
      if(m2==7 && m5==9 && (m2+m5+o2+o5)%2 == 0){
        m2 = m5 = 9;
        fg = 1;
      }
      else if(m2==7 && m5==9){
        fg = 1;
        continue;
      }
      else if(mn < 7 && m2==mn){
        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( fg==0 || (m2+m5+o2+o5)%2 == 0 ){
//       mn = min(m2, m5);
//       if(m2==7 && m5==9 && (m2+m5+o2+o5)%2 == 0){
//         m2 = m5 = 9;
//         fg = 1;
//       } else if(m2==7 && m5==9){
//         fg = 1;
//         continue;
//       } else if(mn < 7 && m2==mn){
//         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