PKU 2190 ISBN

http://poj.org/problem?id=2190
ISBNのコードが1文字抜けた状態で与えられる。このとき、ISBNのコード基準を満たすように抜けた文字を求めよというような問題。

一発AC。うれしい

main(){
  string in;
  cin>>in;
  int sum=0;
  int q;
  rep(i,10){
    if(in[i]=='?'){
      q=i;
      continue;
    }
    if(isdigit(in[i]))sum+=(in[i]-'0')*(10-i);
    else sum+=10*(10-i);
  }

  int ans=-1;
  rep(i,11){
    if(((10-q)*i+sum)%11==0){
      ans=i;
      break;
    }
  }
  if(ans==-1 || q<9 && ans==10)cout<<-1<<endl;
  else if(ans<10)cout<<ans<<endl;
  else cout<<'X'<<endl;
}