Cantor表
思路
见代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();
int num = 1; //在第几条斜线上
int sum = 1; //前num条斜线时数的个数总和
int t = 1;
while(sum < n){
num ++;
t ++;
sum += t;
}
sum -= t; //前num-1条斜线时数的个数总和
/**
* 沿斜线从上到下
* 偶斜线:分子递增,分母递减
* 奇斜线:相反
* 且最大值为斜线号
*/
int x = 1; //分子
int y = 1; //分母
if((num & 1) == 0){
x = n - sum;
y = (num + 1) - x;
}else{
y = n - sum;
x = (num + 1) - y;
}
System.out.println(x + "/" + y);
}
}