problem description
在美麗的hdu,有一名大三的同學,他的速度是眾所周知的,跑100公尺僅僅用了2秒47,在他跑步過程中會留下殘影的哎,大家很想知道他是誰了吧,他叫仙人球,既然名字這樣了,於是他的思想是單一的,他總是喜歡從一點出發,經過3次轉折(每次向右轉90°),回到出發點,而且呢,他每次轉折前總是跑相同長度的路程,所以很多人都想知道如果用『1』算他跑步出發的第乙個殘影的話,那麼回到起點的時候,他的殘影是怎麼樣的呢?
input
測試資料有多行,每一行為乙個數n(1<=n<=10)(以0結尾,0不做處理),即仙人球在沒有回到起點的時候,跑過留下n個殘影后突然90°右轉。
output
每組測試資料輸出乙個結果,並且每個殘影的計數字長度為3個字元長度。(當然n等於1的話,它的結果也是占用3個字元位置的)
2008資訊工程學院集訓隊——選拔賽
這題看到以後第一時間想到的是蛇形填數,但是這個和蛇形填數不同的地方是中間的空白是沒有東西的,所以只能靠模擬來做,我是找到了規律,然後一點一點除錯出來的,剛調完上面的發現只能過乙個樣例,於是又調了半天才調好的**:
#include
using
namespace std;
int ans[
100]
;int
main()
else
if(i>
1&&i
else
if(i==n)
} cout<
注意輸出的時候%
3d是必要格式,因為題目裡寫了即使輸出乙個也佔三格。
如果找不到規律的話怎麼辦呢,那就只能硬做了:寫乙個ans1 = (n-1)4 正好等於樣例裡的12 但是我剛開始寫的3n在別的數字裡結果就不對了,然後ans2=n+1沒有問題,用外層for迴圈來控制一下迴圈次數,用內迴圈來在每一行填數由於去掉第一行和最後一行,所以外迴圈是n-2到0,j=1的話就輸出大的ans1 然後讓ans1-- 如果j=n的話就輸出ans2 讓ans2++ 最後再輸出最後一行就行了,正好用到了ans1和ans2來控制輸出 剛開始我加了個關閉同步,然後printf和cout昏迷了 cout的東西就是輸出不了,把關閉同步刪掉就ac了 **:
#include
using
namespace std;
intmain()
for(
int i=
1;i<=n;i++
)printf
("%3d"
,i);
cout<
int t=
(n-1)*
4;int ans1=t;
int ans2=n+1;
for(
int i=n-
2;i>
0;i--
)for
(int j=
1;j<=n;j++
)else
if(j==n)
else
cout<<
" ";}
for(
int i=ans1;i>=ans2;i--
)printf
("%3d"
,i);
cout<
}}
C 仙人球的殘影
在美麗的hdu,有一名大三的同學,他的速度是眾所周知的,跑100公尺僅僅用了2秒47,在他跑步過程中會留下殘影的哎,大家很想知道他是誰了吧,他叫仙人球,既然名字這樣了,於是他的思想是單一的,他總是喜歡從一點出發,經過3次轉折 每次向右轉90 回到出發點,而且呢,他每次轉折前總是跑相同長度的路程,所以...
HDU 2153 仙人球的殘影
在美麗的hdu,有一名大三的同學,他的速度是眾所周知的,跑100公尺僅僅用了2秒47,在他跑步過程中會留下殘影的哎,大家很想知道他是誰了吧,他叫仙人球,既然名字這樣了,於是他的思想是單一的,他總是喜歡從一點出發,經過3次轉折 每次向右轉90 回到出發點,而且呢,他每次轉折前總是跑相同長度的路程,所以...
(解題報告)HDU2153 仙人球的殘影
a 仙人球的殘影 time limit 1000ms memory limit 32768kb 64bit io format i64d i64u submit status description 在美麗的hdu,有一名大三的同學,他的速度是眾所周知的,跑100公尺僅僅用了2秒47,在他跑步過程中...