カメヲラボ

主にプログラミングとお勉強全般について書いてます

Multiply

http://acm.pku.edu.cn/JudgeOnline/problem?id=1331
例えば、

6 9 42

という3つの数は明らかに、6*9≠42なのだけど、基数を13とすれば、42(13)=4*131+2*130=54(10)で等しい、こんな感じで、基数が2〜16の数について計算結果が正しくなる基数を求めてちょって問題。どの基数でもムリな場合は0と出力してくだされ。
3回もstrtolを書いてる時点で終わってる気がするので、誰かスマートにしてあげてオクレ。

main(i,v,k)
{
  for(gets(v);gets(v);printf("%d\n",i%17))
    for(i=2;k=strtol(v,0,i)*strtol(strchr(v,32),0,i),
    !k||(k-strtol(strrchr(v,32),0,i))&&i<17;++i);
}