洛谷P1014 Cantor表

2020-02-06 16:01:42来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

洛谷P1014 Cantor表

一枚蒟蒻的第一篇题解(我竟然一遍过)【本题于2019.10.13 AC】

话不多说直接切入正题

首先列出一个表来找规律:

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

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

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

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

5/1 …… 5/2

6/1

把头向左倾斜45度就差不多能看出来(真像个z子形


然后找到了规律,这里就不说了,就是和蛇一样

这题给的数不大不小正好不会TLE,直接暴力;

横着为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 }

 


原文链接:https://www.cnblogs.com/laoguantongxiegogo/p/12270851.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:1. c++实现最最最原始人的数字时钟

下一篇:二叉树(1)二叉树基本操作通用接口