仙人球的殘影
阿新 • • 發佈:2019-01-28
在美麗的HDU,有一名大三的同學,他的速度是眾所周知的,跑100米僅僅用了2秒47,在他跑步過程中會留下殘影的哎,大家很想知道他是誰了吧,他叫仙人球,既然名字這樣了,於是他的思想是單一的,他總是喜歡從一點出發,經過3次轉折(每次向右轉90°),回到出發點,而且呢,他每次轉折前總是跑相同長度的路程,所以很多人都想知道如果用‘1’算他跑步出發的第一個殘影的話,那麼回到起點的時候,他的殘影是怎麼樣的呢?
Input
測試資料有多行,每一行為一個數N(1<=N<=10)(以0結尾,0不做處理),即仙人球在沒有回到起點的時候,跑過留下N個殘影后突然90°右轉。
Output
每組測試資料輸出一個結果,並且每個殘影的計數位長度為3個字元長度。(當然N等於1的話,它的結果也是佔用3個字元位置的)
Sample Input
4
Sample Output
1 2 3 4 12 5 11 6 10 9 8 7
思路,這個問題實際上就是求N行的順時針遞增的數字表。
主要就是找到規律,1下面那個數字就是4*n-4.可理解為加入每條邊都有N個不同的數,就有4*n個,但是四個角重合了4個,所以最大的數字是4*n-4;
同樣的,n下面那個數字就是n+1
依此類推。就能找出數字規律了。
#include<stdio.h> void main() { int n; while(~scanf("%d",&n)&&n) { int i,j; //列印第一行 for(i=0;i<n;i++) printf("%3d",i+1); //列印中間的n-2行 printf("\n"); for(i=1;i<n-1;i++){ printf("%3d",4*n-3-i); for(j=0;j<n-2;j++) printf(" "); printf("%3d\n",n+i); } //如果n>1,再列印第n行,如果n<1,就不用了。 if(n>1){ int t=3*n-2; for(j=0;j<n;j++) printf("%3d",t--); printf("\n"); } } }
ok,AC,找規律,有趣。