PKU 1140 Expanding Fractions

http://poj.org/problem?id=1140
分数を小数表示して、ループする桁の個数を表示しろというような問題。

よくあるような気がする問題。

int appmod[1000];
int n,m;
char ans[1000];

void solve(){
  memset(appmod,0,sizeof(appmod));
  int sz=0;
  int osz=0;
  ans[osz++]='.';++sz;

  while(true){
    appmod[n]=sz;        
    n*=10;
    if(sz%50==0)ans[osz++]='\n';
    ans[osz++]=n/m+'0';++sz;
    n-=n/m*m;
    if(appmod[n]){
      ans[osz]=0;
      puts(ans);
      printf("The last %d digits repeat forever.\n",sz-appmod[n]);
      break;
    }
    if(!n){
      ans[osz]=0;
      puts(ans);
      puts("This expansion terminates.");
      break;
    }
  }
}

main(){
  while(cin>>n>>m,n)solve();
}