結果
問題 | No.883 ぬりえ |
ユーザー |
|
提出日時 | 2019-09-13 21:56:18 |
言語 | PyPy2 (7.3.15) |
結果 |
AC
|
実行時間 | 127 ms / 2,000 ms |
コード長 | 1,197 bytes |
コンパイル時間 | 1,227 ms |
コンパイル使用メモリ | 76,704 KB |
実行使用メモリ | 79,628 KB |
最終ジャッジ日時 | 2024-07-04 10:33:47 |
合計ジャッジ時間 | 4,126 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 19 |
ソースコード
rr = raw_inputrri = lambda: int(raw_input())rrm = lambda: map(int, raw_input().split())def solve1(tot, K):q, r = divmod(tot, K)N = q + (r > 0)N = max(N, K)ans = [['.'] * N for _ in xrange(N)]for r, row in enumerate(ans):for c in range(r, r+K):c %= Nif tot:ans[r][c] = '#'tot -= 1return ansdef make(N, K, tot):ans = [['.'] * N for _ in xrange(N)]for r, row in enumerate(ans):for c, v in enumerate(row):zr = r / Kzc = c / Kif zr == zc and tot:ans[r][c] = '#'tot -= 1return ansdef solve2(tot, K):def carry(n):ans = 0while n > 0:delta = min(n, K)ans += delta * deltan -= deltareturn ansn = 1while carry(n) < tot:n += 1return make(n, K, tot)def solve(tot, K):ans1 = solve1(tot, K)ans2 = solve2(tot, K)return ans1 if len(ans1) <= len(ans2) else ans2ans = solve(*rrm())print len(ans)for row in ans:print "".join(row)