一枚蒟蒻的第一篇题解(我竟然一遍过)【本题于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 }