洛谷P1014 Cantor表

一枚蒟蒻的第一篇題解(我居然一遍過)【本題於2019.10.13 AC】

話很少說直接切入正題

首先列出一個表來找規律:ios

1/1 …… 1/2 …… 1/3 …… 1/4 …… 1/5 …… 1/6spa

2/1 …… 2/2 …… 2/3 …… 2/4 …… 2/5code

3/1 …… 3/2 …… 3/3 …… 3/4blog

4/1 …… 4/2 …… 4/3ci

5/1 …… 5/2io

6/1class

把頭向左傾斜45度就差很少能看出來(真像個z子形stream


而後找到了規律,這裏就不說了,就是和蛇同樣變量

這題給的數不大不小正好不會TLE,直接暴力;di

橫着爲x,縱着爲y,即這些數能夠表示爲x/y;

這就好辦了


用兩個變量分別儲存x,y

而後進行一系列的操做:當x=1時y+1;y=1時x+1;

如果都沒有,則看狀況向右上或左下變換x,y;

好的,下面就是本題代碼了!爲防止抄襲,改了幾個地方,嘿嘿

 1 #include<iostream>
 2 #incldue<cstdlib>
 3 #include<cstdio>
 4 using namespace std;
 5 int mian()
 6 {
 7 
 8     int n,p=0,x=1,y=1,z1=x,z2=y;
 9     cin>>n;
10     for(int i=0;i<n-1;i++)
11     {
12         if(y==1&&z1=x)
13         {
14             x++;
15             z2=x;
16             p=1;
17         }
18         else
19         {
20             if(x==1&&z2==y)
21             {
22                 y++;23                 z1=y;
24                 p=0;25             }
26             else
27             {
28                 if(p==1)//當p==1時,向右下
29                 {
30                     x--;
31                     y++;
32                 }
33                 else//不然向右上
34                 {
35                     x++;
36                     y--;
37                 }
38             }
39         }
40     }
41     cout<<y<<"/"<<x;//輸出y/x
42  return 0;
43 }
相關文章
相關標籤/搜索