羅区P1014.Cantorテーブル

羅区P1014.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

サンプル入力と出力

入力サンプル#1
7
サンプル出力#1
1/4

トピックのアイデア

#include<iostream>
#define ll long long

using namespace std;

int main()
{
    int flag = 1;
    ll n,i=1,j=1,t=1;
    scanf("%lld",&n);
    while(1){
        if(t==n){
            printf("%lld/%lld",i,j);
            return 0;
        }
        switch(flag)
        {
            case 1:
            j++;
            t++;
            flag = 2;
            break;
            case 2:
            i++;
            j--;
            t++;
            if(j==1)flag = 3;
            break;
            case 3:
            i++;
            t++;
            flag = 4;
            break;
            case 4:
            i--;
            j++;
            t++;
            if(i==1)flag = 1;
            break;
        }
    }
    return 0;
}

おすすめ

転載: www.cnblogs.com/fsh001/p/12331874.html