魔法陣は実装しきれてないので,できたところまでで.
No.216 FAC
問題
回答
先に断っておきますが,あまりよいコードではないと思います...
Dictionaryで点数が入った人と点数を数えておいて,最後に一番点数の高い人を求めて,出力ですね.
同率トップでもYESである点に注意.そこが若干厄介だと思います.
私は迷った挙句,ディクショナリの中身を全部確認することにしました.それが確実だと思ったので….
N = int(input()) progli = list(map(int, input().split())) scoreli = list(map(int, input().split())) scoremap = {0:0} for i in range(N): if scoreli[i] in scoremap: scoremap[scoreli[i]] += progli[i] else: scoremap.update({scoreli[i]:progli[i]}) maxid = 0 maxval = scoremap[0] for k, v in scoremap.items(): if maxval < v: maxval = v maxid = k print("YES" if maxid == 0 else "NO")
変数名をもう少しかっこよくしたい...
NO.217 魔法陣
問題
これ解説することもないんですよね,ただWikipediaに書いてあるアルゴリズムを元に実装するだけなので….
ただ,私は実装しきれなかったので,まだまだです….行列とかは頭がいたーい.
奇数の部分だけ完成しました.テストしても通ってるみたい.参考までにどうぞ.
N = int(input()) if N % 2 == 1: table = [[0 for _ in range(N)] for i in range(N)] putter = N // 2 counter = 1 for i in range(N): for j in range(N): table[(N - j + i * 2) % N][putter] = counter counter += 1 putter += 1 if putter >= N: putter = 0 putter -= 1 for elem in table: print(" ".join(list(map(str, elem))))
続きは気が向いた時に実装します.