一枚蒟蒻的第一篇題解(我竟然一遍過)【本題於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 ...
一枚蒟蒻的第一篇題解(我竟然一遍過)【本題於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 }