/************************************************
Algorithmen und Problemloesungen mit C++,
http://www.algorithmen-und-problemloesungen.de
Copyright @2007 by Doina Logofatu
************************************************/

#include <fstream>
#include <cmath>

using namespace std;

typedef  struct{
  int nr, num;
}TFraction;

TFraction* getTerm(unsigned long int n){
  TFraction* f = new TFraction();
  int k, m;
  k = (int)ceil(((sqrt((double)(8*n+1))-3)/2))+1;  
  m = n - k*(k-1)/2;
  if(k%2){
    f->nr = k + 1 - m;
    f->num = m;
    }else{
      f->nr = m;
      f->num = k + 1 - m;
    };
  return f;
};

int main(){
  unsigned long int n;
  TFraction *f;
  ifstream in("cantor.in");			
  ofstream out("cantor.out");
  while (in && !in.eof() && in >> n){	
    f = getTerm( n );
    out << n << ". Term ist " 
      << f->nr << "/" << f->num << endl;
    delete f;
  }
  return 0;
}


