Hatena::ブログ(Diary)

敗戦記

2011-03-14

AOJ 0113 Period

http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=0113

面倒くさそうでずっと放置していた問題。

簡単な問題なんだと思いますが、自分はめっちゃ手間取りました。商とあまりの対応付けみたいなものがうまくプログラムに出来ていなくて大変でした。

int ans[100];
int mod[100];

main(){
  int p,q;
  while(cin>>p>>q){
    int pos=0;

    p*=10;
    while(pos<100){
      ans[pos]=p/q;
      mod[pos]=p;
      p%=q;
      p*=10;
      ++pos;
    }


    if(mod[99]){
      int ms=0,mt;
      for(;;ms++){
	for(mt=ms+1;mt<100;mt++){
	  if(mod[ms]==mod[mt])break;
	}
	if(mt<100)break;
      }

      rep(i,mt)cout<<ans[i];
      cout<<endl;
      rep(i,ms)cout<<' ';
      rep(i,mt-ms)cout<<'^';
      cout<<endl;
    }else{
      for(int i=0;mod[i];i++)cout<<ans[i];
      cout<<endl;
    }
  }
}

堀江伸一堀江伸一 2011/08/17 16:55 http://www14.atwiki.jp/c21coterie/pages/464.html
リンク先にこの問題を解くコードを掲載しています。
私の場合条件分岐がちょっと膨らみました。
なんかもうちょっと奇麗に短くできそうな気もするのですが。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/atetubou/20110314/1300098044