(模拟) codeVs1083&& 洛谷P1014Cantor表

mac2022-06-30  105

题目描述  Description

现代数学的著名证明之一是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,…

输入描述  Input Description

整数N(1≤N≤10000000)

输出描述  Output Description

表中的第N项

样例输入  Sample Input

7

样例输出  Sample Output

1/4

 

模拟题,用flag来判断上升和下降,如果到了边界,比如分子或分母为1,就改变flag,并增加分母或分子的值

C++代码:

#include<iostream> #include<cstdio> using namespace std; int main(){ int n; cin>>n; int left = 1,right = 1; bool flag = true; for(int i = 2; i <= n; i++){ if(left == 1 && flag){ right++; flag = !flag; } else if(right == 1 && !flag){ left++; flag = !flag; } else if(flag){ left--; right++; } else{ left++; right--; } } cout<<left<<"/"<<right<<endl; return 0; }

 

转载于:https://www.cnblogs.com/Weixu-Liu/p/10630188.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)