Problem : 294 - The Evil Temple and the Moving Rocks
Special Judge
Problem:
hh是一個神祕的龍使,在hh奮力的殺了幾隻弱弱的小怪後,抵達了一個四周都是牆壁,由 N x N 塊磁磚所構成的房間,裡面空無一物。
此時hh發現牆上寫著:要抵達下一個房間,你就必須依靠石頭所發出的聲音!
做為一個優秀的龍使,hh馬上就知道該如何處理這種狀況,hh有4種石頭:
•'^': 這種石頭只會往上移動。
•'<': 這種石頭只會往左移動。
•'>': 這種石頭只會往右移動。
•'v': 這種石頭只會左下移動。
由於hh非常厲害,所以他的包包中裝了無限顆的這些石頭,為了抵達下個房間,hh必須在一些磁磚上放上石頭(每個磁磚上只能放一顆石頭,否則房間會爆炸!),然後hh會使用魔法讓一顆石頭產生魔法能量,此時這顆石頭會依據自己的種類移動一格,並消耗掉 1 單位的魔力,直到撞到另一顆石頭或牆壁才停止(若一開始障礙已在他面前,這顆石頭並不會移動,撞到的同時也會消耗 1 單位的魔力)。接下來這顆石頭將停止移動,若他撞到的是牆壁,或者魔力的總消耗超過107,hh將再也無法驅使他移動;反之魔法能量將會全部傳遞給撞到的石頭,使他移動,並重複著上述的動作。
當石頭已移動了一格以上才撞到障礙,便會發出一個聲響,當產生了至少 x 個聲響時,下一個房間的房門就會出現,此時的石頭仍會繼續移動直到撞到牆壁或hh魔力耗盡,然後hh才會前往下個房間。
以下會告訴你發出聲響與不發出聲響的情況。
因為在撞到另一顆石頭前已經移動1格以上,所以會發出聲響。

因為在撞到牆壁前已經移動1格以上,所以會發出聲響。

因為在撞到另一顆石頭前沒有移動任何一格,所以不發出聲響。

因為在撞到牆壁前沒有移動任何一格,所以不發出聲響。

告訴你 N 與 x ,請你幫助hh選擇石頭該如何放置吧!
此時hh發現牆上寫著:要抵達下一個房間,你就必須依靠石頭所發出的聲音!
做為一個優秀的龍使,hh馬上就知道該如何處理這種狀況,hh有4種石頭:
•'^': 這種石頭只會往上移動。
•'<': 這種石頭只會往左移動。
•'>': 這種石頭只會往右移動。
•'v': 這種石頭只會左下移動。
由於hh非常厲害,所以他的包包中裝了無限顆的這些石頭,為了抵達下個房間,hh必須在一些磁磚上放上石頭(每個磁磚上只能放一顆石頭,否則房間會爆炸!),然後hh會使用魔法讓一顆石頭產生魔法能量,此時這顆石頭會依據自己的種類移動一格,並消耗掉 1 單位的魔力,直到撞到另一顆石頭或牆壁才停止(若一開始障礙已在他面前,這顆石頭並不會移動,撞到的同時也會消耗 1 單位的魔力)。接下來這顆石頭將停止移動,若他撞到的是牆壁,或者魔力的總消耗超過107,hh將再也無法驅使他移動;反之魔法能量將會全部傳遞給撞到的石頭,使他移動,並重複著上述的動作。
當石頭已移動了一格以上才撞到障礙,便會發出一個聲響,當產生了至少 x 個聲響時,下一個房間的房門就會出現,此時的石頭仍會繼續移動直到撞到牆壁或hh魔力耗盡,然後hh才會前往下個房間。
以下會告訴你發出聲響與不發出聲響的情況。
因為在撞到另一顆石頭前已經移動1格以上,所以會發出聲響。
因為在撞到牆壁前已經移動1格以上,所以會發出聲響。
因為在撞到另一顆石頭前沒有移動任何一格,所以不發出聲響。
因為在撞到牆壁前沒有移動任何一格,所以不發出聲響。
告訴你 N 與 x ,請你幫助hh選擇石頭該如何放置吧!
Input:
依序會有以下4筆測試資料:
• N=3, x=2
• N=5, x=5
• N=90, x=81000
• N=100, x=100000
其中第一筆是Sample。
• N=3, x=2
• N=5, x=5
• N=90, x=81000
• N=100, x=100000
其中第一筆是Sample。
Output:
輸出 N 行,每行 N 個字元,第i行的第j個字元表示該磁磚的狀態,必須剛好是以下五種字元的一種:
•'^', '<', '>', 或 'v': 表示此磁磚上存在其中的一種石頭。
•'.': 表示此磁磚上沒有石頭。
然後輸出兩個數字r c (1 ≤ r, c ≤ N),表示hh一開始必須用魔力驅使哪一顆石頭移動,注意,此格必須一定要有石頭。
若有多組解法,輸出任意一組即可。
•'^', '<', '>', 或 'v': 表示此磁磚上存在其中的一種石頭。
•'.': 表示此磁磚上沒有石頭。
然後輸出兩個數字r c (1 ≤ r, c ≤ N),表示hh一開始必須用魔力驅使哪一顆石頭移動,注意,此格必須一定要有石頭。
若有多組解法,輸出任意一組即可。
Sample Input:
3 2
Sample Output:
>vv
^<.
^.<
1 3
^<.
^.<
1 3
HINT:
關於Sample:

sound 0

sound 1

sound 2
接下來會產生無限循環直到總魔力消耗了107才停止,且這些移動不會發出聲響。

最後停止時剛好有兩聲,是一組解喔!
--------------------------------------------------------------------------------------------------------sound 0
sound 1
sound 2
接下來會產生無限循環直到總魔力消耗了107才停止,且這些移動不會發出聲響。
最後停止時剛好有兩聲,是一組解喔!
#include<stdio.h>
char s[105][105];
int main(){
int n,m,i,j,k,p;
scanf("%d%d",&n,&m);
if(n==3){
puts(">vv\n^<.\n^.<\n1 3");
return 0;
}
if(n==5){
puts(">...v\nv.<..\n..^..\n>....\n..^.<\n1 1");
return 0;
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
s[i][j]='.';
s[0][0]='>';
for(i=1;i<n;i++)
s[i][0]='^';
k=n/2-1;
if(k%2) k++;
for(i=0;i<n;i++){
if(i%2==0){
s[i][n-1]='v';
for(j=1;j<n-k-1;j++)
s[i][j]='>';
for(j=n-k-1;j<n-1;j+=2)
s[i][j]='>',s[i][j+1]='.';
}
else{
s[i][1]='v';
for(j=2;j<1+k+1;j+=2)
s[i][j]='.',s[i][j+1]='<';
for(j=1+k+1;j<n;j++)
s[i][j]='<';
}
}
s[n-1][1]='<';
for(i=0;i<n;i++){
for(j=0;j<n;j++)
putchar(s[i][j]);
puts("");
}
printf("1 1\n");
}
沒有留言:
張貼留言