結果
| 問題 |
No.220 世界のなんとか2
|
| コンテスト | |
| ユーザー |
siman
|
| 提出日時 | 2022-04-21 04:47:27 |
| 言語 | Ruby (3.4.1) |
| 結果 |
AC
|
| 実行時間 | 89 ms / 1,000 ms |
| コード長 | 802 bytes |
| コンパイル時間 | 69 ms |
| コンパイル使用メモリ | 7,296 KB |
| 実行使用メモリ | 12,288 KB |
| 最終ジャッジ日時 | 2024-06-13 01:22:20 |
| 合計ジャッジ時間 | 2,604 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 19 |
コンパイルメッセージ
Syntax OK
ソースコード
P = gets.to_i
dp = Array.new(P + 1) { Array.new(2, 0) }
dp[0][0] = 8
dp[0][1] = 1
(P - 1).times do |i|
dp[i + 1][0] += 9 * dp[i][0]
dp[i + 1][1] += dp[i][0]
dp[i + 1][1] += 10 * dp[i][1]
end
s1 = dp.map(&:last).sum
s2 = (10 ** P) / 3
dp2 = Array.new(P + 1) { Array.new(3, 0) }
dp3 = Array.new(P + 1) { Array.new(3, 0) }
dp2[0][0] = 3
dp2[0][1] = 3
dp2[0][2] = 3
dp3[0][0] = 1
(P - 1).times do |i|
b = 10 ** (i + 1)
0.upto(2) do |k|
dp2[i + 1][k] += dp2[i][k]
dp3[i + 1][k] += dp3[i][k]
end
1.upto(9) do |j|
m = (j * b) % 3
0.upto(2) do |k|
nm = (m + k) % 3
if j == 3
dp3[i + 1][nm] += dp2[i][k]
else
dp2[i + 1][nm] += dp2[i][k]
end
dp3[i + 1][nm] += dp3[i][k]
end
end
end
s3 = dp3[P - 1][0]
puts s1 + s2 - s3
siman