NOIP1999Cantor表
描述
现代数学的著名证明之一是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项
限制
各个测试点1s
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include<iostream> using namespace std; int main() { int k,t=0,m,n,i; cin>>k; for(i=1;t<k;i++)t+=i; i--; n=k-(t-i); m=i-n+1; if(i%2==0)cout<<n<<'/'<<m; else cout<<m<<'/'<<n; return 0; } |
这道题有公式可以O(1)来着