现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:
我们以Z字形给上表的每一项编号。第一项是1/1,然后是1/2,2/1,3/1,2/2,…
给定N,求第N项。
输入一个整数N(1≤N≤10000000)。输出一个分数,即表中的第N项。样例输入7样例输出1/4本题采用的循环遍历的方法,下面附上ac代码。若有疑问或者有更好的方法欢迎提出加以交流。
#include<stdio.h>int main(){ int i,j,k=1,t=1,n; scanf("%d",&n); while(t<=n) { if(k%2==0) { j=k; for(i=1;j>=1&&i<=k;i++) { if(t==n) PRintf("%d/%d ",i,j); j--; t++; } } else if(k%2!=0) { j=1; for(i=k;j<=k&&i>=1;i--) { if(t==n) printf("%d/%d ",i,j); j++; t++; } } k++; } return 0;}
新闻热点
疑难解答