魔法阵
【題目描述】?
昔有人,名斯凱利恩夫·盧克。其英文名乃SkyLYnf·Luke。汝知之何名?曰實,吾亦不知。其有別號曰ylm。何?吾亦不知。汝宜喻之。其乃吾。
他有一個Servant,叫做阿爾托莉雅·潘德拉貢,英文名是Arturia Pendragon,別名是Saber。她的 誓約勝利之劍(Excalibur)比紅A的無限劍制厲害多了!(上一題的紅A沒有Saber厲害)
【題目描述·真】?
有一天,skylynf正在畫召喚陣。這時候saber走到了召喚陣中間,告訴skylynf說:“你個菜鳥master,連召喚陣都畫錯了,趕快重畫!”
于是saber拿出了一張寫滿了召喚陣畫法的紙。
請你寫一個程序來幫skylynf修改魔法陣,以防他被saber拿劍砍死。
魔法陣是一個n行n列的數列陣。每一個數都小于2147483647。
魔法陣被粗心的skylynf給畫歪了,現在saber要讓他把整個魔法陣移一下位。
saber給了一個例子:
圖1是一個錯誤的魔法陣。現在我們要像圖2這樣移位。圖3是正確的魔法陣。
圖1的第4列,每個數字向下移4位,剛好回到原位,如圖3所示。
?
這個模式是這樣的:對于第i列的魔法陣來說,把每一個數字向下移i位。對于超過n的,就當做一個環,比如矩陣第四行第一列的數字21,我們就將它行數加一,發現他超過了4,于是就換到了第一行。
現在給你一個n*n的魔法陣,請按照這個規則來輸出正確的魔法陣。
Skylynf已經超級口渴了。現在他特別想喝水。請你趕快寫完這題好讓skylynf去讓DTZ倒水給他喝。
【輸入描述】?
第一行一個數n(n小于100)
接下來n行,每行n個數。表示skylynf魔法陣。
【輸出描述】?
N行,每行n個數,表示正確的魔法陣。
【樣例輸入】?
4
13 11 33 31
44 4 5 16
40 15 26 29
21 43 13 13
【樣例輸出】?
21 15 5 31
13 43 26 16
44 11 13 29
40 4 33 13
【數據范圍】?
N<=100
Aij<maxlongint< span=""> </maxlongint<>
分析
輸入時,把錯誤的魔法陣放在一個數組里,把正確的魔法陣放在另一個數組里。
注意:對于第 ?i ?列的魔法陣來說,把每一個數字向下移 ?i ? 位。
程序:
var
n,i,j:longint;
a,b:array[0..300,0..300]of longint;
begin
? ? readln(n);
? ? for i:=1 to n do
? ? for j:=1 to n do
? ? read(a[i,j]);
? ? for j:=1 to n do
? ? begin
? ? ? ? for i:=n downto 1 do
? ? ? ? if (i+j)>n then b[i+j-n,j]:=a[i,j] else
? ? ? ? if (i+j)=n then b[n,j]:=a[i,j] else
? ? ? ? if (i+j)<n then b[i+j,j]:=a[i,j];
? ? end;
? ? for i:=1 to n do
? ? begin
? ? ? ? for j:=1 to n do
? ? ? ? write(b[i,j],' ');
? ? ? ? writeln;
? ? end;
end.
轉載于:https://www.cnblogs.com/YYC-0304/p/9500115.html
總結