PKU 1969 Count on Canton

http://poj.org/problem?id=1969
問題文のような感じで分数を並べたときに、n番目の分数は何かを求める問題。

最初全部を格納しようとしたらMLEだったのですが、愚直コードでも書いてみるものですね。意外にも通りました。

main(){
  int n;
  while(cin>>n){
    int c=1,p=1;
    rep(i,n-1){
      if(c==1 && p%2)++p;
      else if(p==1 && c%2==0)++c;
      else if(p+c&1)++c,--p;
      else --c,++p;
    }
    cout<<"TERM "<<n<<" IS "<<c<<'/'<<p<<endl;
  }
}