洛谷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 }
相关文章
相关标签/搜索