PKU 1331 Multiply

http://poj.org/problem?id=1331
基数変換

ちゃんとその基数に収まっているかを確認する。
サンプル親切。

ll to10(string in,ll base){
  ll ret=0;
  rep(i,SZ(in)){
    ret=ret*base+in[i]-'0';
  }
  return ret;
}

main(){
  int t;
  cin>>t;
  while(t--){
    string p,q,r;
    cin>>p>>q>>r;
    bool out=false;
    for(int i=2;i<=16;i++){
      bool ok=true;
      rep(j,SZ(p))if(p[j]-'0'>=i)ok=false;
      rep(j,SZ(q))if(q[j]-'0'>=i)ok=false;
      rep(j,SZ(r))if(r[j]-'0'>=i)ok=false;
      if(!ok)continue;
      if(to10(p,i)*to10(q,i)==to10(r,i)){
	cout<<i<<endl;
	out=true;
	break;
      }
    }
    if(out)continue;
    cout<<0<<endl;
  }
}