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;
}
posted @ 2019-07-27 15:39  幽灵小一只  阅读(189)  评论(0)    收藏  举报