PKU 2719 Faulty Odometer

http://poj.org/problem?id=2719
4が表示できない走行距離計がある。
例: 3の次に5が来る。この場合5と表示されていれば4を意味する。
この走行距離計の値を本来の値に変換するようなプログラムを書けという問題。

昨日SPOJで思いっきり似た問題を解きました。
入力を9進数だと考えればおk。

int to(int n){
  int ret=0;
  int ba=1;
  while(n){
    ret+=n%10*ba;
    if(n%10>4)ret-=ba;
    n/=10;
    ba*=9;
  }
  return ret;
}

main(){
  int n;
  while(cin>>n,n)cout<<n<<": "<<to(n)<<endl;
}