問題はもともとこのリンクにあります。私は Python コードを書きましたが、64 ポイント (合計ポイントは 100) を獲得しました。これは、私のコードに不足しているポイントがあることを示しています。16 のテスト ケースのうち 11 に合格しましたが、5 つのテスト ケースに問題がありました。私のコードのどこに欠けている点があり、どうすれば修正できますか?
import math
m = int(raw_input())
liste = []
y_liste = []
md = 0
ad = 0
sum = 0
sum2 = 0
for k in range(m):
temp = str(raw_input())
liste.append(temp)
liste[k] = liste[k].split(" ")
liste[k] = [int(i) for i in liste[k]]
for k in range(m):
md += liste[k][k]
ad += liste[k][m-k-1]
if md == ad:
print 0
else:
for k in range(m):
for l in range(m):
sum2 += liste[l][k]
sum += liste[k][l]
if sum2 != md and -(k+1) is not y_liste:
y_liste.append(-(k+1))
if sum != md and (k+1) is not y_liste:
y_liste.append(k+1)
sum2 = 0
sum = 0
if md != ad:
y_liste.append(0)
print len(y_liste)
y_liste.sort()
for i in y_liste:
print i
問題文
魔方陣
ジョニーは、魔方陣 (すべての行、列、および対角線の合計が同じ数の二乗、つまり、主対角線 (左上隅から右下隅に向かう対角線を意味します) と逆対角線 (対角線を意味します) の両方) を設計しました。右上隅から左下隅に向かっている)。それをテストするプログラムを書きます。
タスク
与えられた正方形が魔法であるかどうか (つまり、すべての行、列、対角線の合計が同じかどうか) をチェックするプログラムを作成してください。
入力
1 行目: N 、正方形のサイズ (1 <= N <= 600)。次の N 行: 四角形、N スペースで区切られた行の前の整数、四角形の各行ごとのエントリを表します。
出力
最初の行: M 、合計が主対角線 (つまり、正方形の最初の要素を含むもの) の合計に達しない行の数。正方形が魔法の場合、プログラムは 0 を出力する必要があります。 次の M 行: 主対角線の合計に達しない行の並べ替えられた (インクリメンタルな順序で) リスト。行には 1、2、…、N の番号が付けられます。列には -1、-2、…、-N の番号が付けられます。対角線の番号は 0 です。
注: 出力の最終行の末尾に改行文字があります。
サンプル入力 1
3
8 1 6
3 5 7
4 9 2
サンプル出力 1
0
サンプル入力 2
4
16 3 2 13
5 10 11 8
6 9 7 12
4 15 14 1
サンプル出力 2
3
-2
-1
0
出力例 2 の説明入力四角形
は次のようになります
。
上の画像に示すように、正方形には 4 つの行 (オレンジ色で 1 から 4 のラベルが付いています) と 4 つの列 (緑色で -1 から -4 のラベルが付いています) があります。正方形の主対角線と対角線は、それぞれ赤と青で強調表示されます。
主対角線の合計は 16 + 10 + 7 +1 = 34
です。逆対角線の合計は 13 + 11 + 9 + 4 = 37 です。これは主対角線の合計とは異なるため、逆対角線に対応する値 0 は次のようになります。報告。
行 1 の合計 = 16 + 3 + 2 + 13 = 34。
行 2 の合計 = 5 + 10 + 11 + 8 = 34。
行 3 の合計 = 6 + 9 + 7 + 12 = 34。
行 4 の合計 = 4 + 15 + 14 + 1 = 34.
列 -1 の合計 = 16 + 5 + 6 + 4 = 31. これは主対角線の合計とは異なるため、値 -1 を報告する必要があります。
列 -2 の合計は 3 + 10 + 9 + 15 = 37 です。これは主対角線の合計とは異なるため、値 -2 を報告する必要があります。
列 -3 の合計は 2 + 11 + 7 + 14 = 34
です。列 -4 の合計は 13 + 8 + 12 + 1 = 34 です。
上記に基づいて、合計が主対角要素の合計にならない 3 つの線があります。それらは増分順にソートする必要があるため、出力は次のようになります:
3
-2
-1
0