1. 程式人生 > 實用技巧 >JavaScript陣列的宣告、陣列元素的新增/刪除/替換

JavaScript陣列的宣告、陣列元素的新增/刪除/替換

題目大意

構造一個 \(n*n\) 的矩陣,滿足裡面每個數都不為質數,但每行每列之和為質數.

solution

剛拿到題被嚇到了一下,以為要寫爆搜,然後判斷是不是滿足條件.

但是這是B題,一定還有更快的方法,

注意到,

all numbers on the square are non-negative integers not exceeding \(10^5\);

只要非負?那麼 \(0\) 也可以了。

一下子簡單了,我們只要這樣構造:

1 1 0 0 0
0 1 1 0 0
0 0 1 1 0
0 0 0 1 1
1 0 0 0 1

也就是當 \(i = j\) 或者 \(i = j+1\) 或者 \(i = n,j = 1\)

\(a[i][j]\)\(1\),其他為 \(0\)

1,0 都不是質數,但每行每列之和為 \(2\) ,是質數。

於是就水完了這道題。

程式碼

快讀、標頭檔案自行腦補

int n;
int main (){
	int T; read(T);
	while(T--){
		read(n);
		for(int i = 1;i <= n;i++){
		    for(int j = 1;j <= n;j++)
			if(j == i+1||j == i||(j == 1&&i==n)) printf("1 ");
			else printf("0 ");
		    puts("");
		}
		printf("\n");
	}
	return 0;
}