带注释 P1014 Cantor表

it2025-03-25  16

输入

7

输出

1/4

#include <iostream> #include <cstdio> #include <algorithm> using namespace std; int main (){ //难点在找规律 /* 第1行 1/1 第2行 1/2 2/1 第3行 3/1 2/2 1/3 第4行 1/4 2/3 3/2 4/1 第5行 5/1 4/2 3/3 2/4 1/5 */ //发现了吗,奇数行分母行为第几项,偶数行分子为第几项 //分子分母和为行数+1 int n,i,j,k; scanf ("%d",&n); int an,an1=0; for (i = 1;an1 <= n;i++) { an=(i*(i-1)/2)+1; an1=(i*(i+1)/2)+1; //通过简单的归纳我们可以得到每行第一项的编号通项公式 } //上面循环为找到第n项的行数i for (j = an;j <= n;j++){ if (j == n) { if (i%2 == 0) printf ("%d/%d",i-j+an-1,j-an+1); else printf ("%d/%d",j-an+1,i-j+an-1); // 所以按奇数偶数情况分别输出项数,行数+1与项数之差 } } return 0; }
最新回复(0)