洛谷 p1014
題目描述
現代數學的著名證明之一是Georg Cantor證明了有理數是可枚舉的。他是用下面這一張表來證明這一命題的:
1/1 1/2 1/3 1/4 1/5 …
2/1 2/2 2/3 2/4 …
3/1 3/2 3/3 …
4/1 4/2 …
5/1 …
… 我們以Z字形給上表的每一項編號。第一項是1/1,然后是1/2,2/1,3/1,2/2,…
輸入輸出格式
輸入格式:
?
整數N(1≤N≤10000000)
?
輸出格式:
?
表中的第N項
?
輸入輸出樣例
輸入樣例#1:
7
輸出樣例#1:
1/4
【思路】找規律
【code】
#include<iostream> #include<cstdio> using namespace std; int n,k=1,cnt; int main() {scanf("%d",&n);while(1){if(n-k>=0)n-=k,cnt++,k++;//cnt表示第幾層。 elsebreak;}if(!n)printf("%d/%d\n",1,cnt);elseif((cnt+1)&1)printf("%d/%d\n",k-n+1,n);elseprintf("%d/%d\n",n,k-n+1);return 0; }
?