描述
现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:
我们以Z字形给上表的每一项编号。第一项是1/1,然后是1/2,2/1,3/1,2/2,…
给定N,求第N项。
输入一个整数N(1≤N≤10000000)。输出一个分数,即表中的第N项。
找规律,打表
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,k,s,m;int x,y;
cin>>n;
k=0,s=0;
while(s<n){
k++;
s+=k;
}
m=n-(s-k);
if(k%2==0)x=1,y=k;else x=k,y=1;
for(int i=2;i<=m;i++)
if(k%2==0)x++,y--;else x--,y++;
printf("%d/%d",x,y);
return 0;
}