羅区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;
}