読者です 読者をやめる 読者になる 読者になる

UVa264 Count on Cantor

問題
http://uva.onlinejudge.org/external/2/264.html

概要
AOJ1007 JPEG Compression の劣化版

解法
うまいやり方もあると思うけど、方向で場合分けをして四方向分作り、愚直にプログラムを書けば終わり。

#include <bits/stdc++.h>

using namespace std;

int main() {
  
  int N;
  
  while(cin >> N) {
    
    int dir = 1;
    int cnt = 1;
    int nume = 1, deno = 1;
    
    while(1) {
      
      if(N == cnt) { break; }
      
      if(dir == 1) {
        deno ++;
        dir ++;
      }
      else if(dir == 2) {
        nume ++;
        deno --;
        // no change dir
      }
      else if(dir == 3) {
        nume ++;
        dir ++;
      }
      else {
        nume --;
        deno ++;
        // no change dir
      }
      
      cnt ++;
      
      if(dir == 2 && deno == 1) {
        dir ++;
      }
      else if(dir == 4 && nume == 1) {
        dir = 1;
      }
    }
    
    cout << "TERM " << N << " IS " << nume << "/" << deno << endl;
  }
  
  return 0;
}