题目描述:
现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:
我们以Z字形给上表的每一项编号。第一项是1/1,然后是1/2,2/1,3/1,2/2,…
输入格式
整数N(1≤N≤10000000)
输出格式
表中的第N项
输入输出样列
输入样例1:
7
输出样例1:
1/4
说明
1999年普及组第一题
【耗时限制】1000ms 【内存限制】128MB
#include <iostream>
#include <cstdio>
#include <cmath>
#include <string.h>
#include <sstream>
#include <cstring>
#include <algorithm>
using namespace std;
int main(){
int i = 0, n, s = 0, x, y;
cin >> n;
while(s < n){
i++;
s += i;
}
s -= i;
if(i % 2 == 1){
x = i, y = 1, s++;
while(s < n)
x--, y++, s++;
}
else{
x = 1, y = i, s++;
while(s < n)
x++, y--, s++;
}
cout << x << '/' << y;
return 0;
}