P1014 Cantor表
P1014 Cantor表
题目链接:https://www.luogu.org/problem/P1014
思路:
找规律,按每一斜行来看,则:
第一行: 1/1; //总数:1;
第二行: 1/2 2/1; //总数:1+2=3;
第三行: 3/1 2/2 1/3; //总数:1+2+3=6;
第四行: 1/4 2/3 3/2 4/1; //总数:1+2+3+4=10;
第五行: 5/1 4/2 3/3 2/4 1/5; //总数:1+2+3+4+5=15;
······ · · · · · ·
由此可找出规律为:
1,偶数行的分母加上所在位置 = 这行的总数加一;
2.偶数行的分子加分母 = 所在的行数加一;
3.奇数行的情况与偶数行的规律基本相同,除分子和分母互换位置;
代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int n,a=0,sum=0;
cin>>n;
while(sum<n){ //算出该数所在的行的总数;
a++;
sum += a;
}
//cout<<a<<" "<<sum<<endl;
if(a%2==0){ //判断是奇数行还是偶数行;
cout<<a-sum+n<<"/"<<sum+1-n<<endl;
}else{
cout<<sum+1-n<<"/"<<a-sum+n<<endl;
}
return 0;
}

浙公网安备 33010602011771号