PKU 1152 An Easy Problem!
http://poj.org/problem?id=1152
与えられた数字をN進数(2 <= N <= 62)として解釈したときに、N-1で割り切れるときの最小のNを求めろというような問題。
入力として0が来る場合を忘れていたり、そもそも入力がintの範囲に収まっているのかが謎な問題。
さすがに-は入っていないよう。
int ctoi[128]; bool decin(const string&in,int base){ int ret=0; rep(i,SZ(in)){ ret=ret*base+ctoi[in[i]]; ret%=base-1; } return ret==0; } main(){ for(int i='0';i<='9';++i)ctoi[i]=i-'0'; rep(i,26){ ctoi['A'+i]=i+10; ctoi['a'+i]=i+36; } string in; while(cin>>in){ if(in=="0"){ cout<<2<<endl; continue; } int base=0; rep(i,SZ(in))base=max(base,ctoi[in[i]]+1); int ans=-1; while(base<=62){ if(decin(in,base)){ ans=base; break; } ++base; } if(ans==-1)cout<<"such number is impossible!"<<endl; else cout<<ans<<endl; } }