#include<stdio.h>
int main()
{
int input;
int h, k;
int i, sum=0;
scanf("%d", &input);
for (i = 1; ; i++){
sum += i; // 求出input数在那个范围内,i就是行数, sum就是所有行加起来数的个数
if (sum >= input){
h = i; // 求解行数
// 纠正列数的计算
// 例如要打印第三个数,那么就是第二行的第二个数
// 已知行数h = 2 = i, sum等于3 sum - 2=1
// k = 3-1=2从而得出列数
sum -= i;
k = input - sum;
break;
}
}
// 行数为偶数时,分子递增,分母递减
// 行数为奇数时,分子递减,分母递增
if (h % 2 == 0){
printf("%d/%d", k, h-k+1);
} else{
printf("%d/%d", h-k+1, k);
}
return 0;
}
标签:P1014Cantor,洛谷,int,sum,列数,C语言,行数,printf,input
From: https://blog.csdn.net/qq_74568860/article/details/140298766