1. JAVA, Gunnar Hage


import java.io.IOException;
import java.util.StringTokenizer;

/**
* FWP-Fach: ACM programming Contest WS 08/09 "264 Count of Cantor"
* Verdict: accepted 0.320
*
* Gunnar Hage, gunnarhage@gmx.de
* AP5(IFB5A) Nov. 2008
*
* Problembeschreibung: http://icpcres.ecs.baylor.edu/onlinejudge/index.php?option=com_onlinejudge&Itemid=8&category=4&page=show_problem&problem=200
*/
public class Main {

public static void main(String[] args)
{
long n = 0;
long m = 0;
long k = 0;
long t = 0;
long num = 0;
long denom = 0;
boolean done = false;
StringTokenizer st = ReadAll();
while(!st.hasMoreTokens()&& !done)
st = ReadAll();
while(st.hasMoreTokens())
{
n = Integer.parseInt(st.nextToken());
//gibt an wieviele Zeilen vor der Zeile stehen, in der unser gesuchter Bruch steht.
k =(long)Math.ceil((Math.sqrt(8*n+1)-3)/2);
// gibt an wieviele toekns in den Zeilen vorher stehen.
//t=k*(k+1)/2;
//gibt den rest, wie weit muss ich in die Zeile rein?
//m = n - t;
//num und denom zusammen.
m = n - (k*(k+1)/2);
if(k%2!=0)
{
num = m;
denom = k + 2 - m;
}
else
{
num = k + 2 - m;
denom = m;
}
System.out.println("TERM " + n + " IS " + num + "/" + denom);
done = true;
}
}

//Veränderte ReadLine... liest jetzt alles von der eingabe und gibt einen StringTokenizer zurück.
static StringTokenizer ReadAll()
{
byte lin[] = new byte [10000];
int lg = 0, car = -1;
try
{
while (System.in.available()>0)
{
car = System.in.read();
lin [lg++] += car;
}
}
catch (IOException e)
{
return (null);
}
//if (car < 0) return (null); // eof
new String();
return (new StringTokenizer(new String (lin, 0, lg)));
}
}

2. C, Evgeni Pavlidis

/**
* ACM programming Contest WS 08/09
* UVa Status: accepted
* Run Time: 0.000
* @author Evgeni Pavlidis evgenipavlidis@yahoo.de
*/

#include <stdio.h>
#include <math.h>

int nr;
int num;

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

int main()
{
unsigned long int n;
while (1)
{
scanf("%ld", &n);
if(feof(stdin))
return 0;

getTerm( n );
printf("TERM %ld IS %d/%d\n",n,nr,num);
}
}