結果
問題 | No.260 世界のなんとか3 |
ユーザー | shiccocsan |
提出日時 | 2017-01-03 16:24:48 |
言語 | Python3 (3.12.2 + numpy 1.26.4 + scipy 1.12.0) |
結果 |
MLE
|
実行時間 | - |
コード長 | 2,047 bytes |
コンパイル時間 | 305 ms |
コンパイル使用メモリ | 12,928 KB |
実行使用メモリ | 97,024 KB |
最終ジャッジ日時 | 2024-12-16 06:23:33 |
合計ジャッジ時間 | 71,384 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 34 ms
17,824 KB |
testcase_01 | MLE | - |
testcase_02 | AC | 35 ms
17,956 KB |
testcase_03 | MLE | - |
testcase_04 | TLE | - |
testcase_05 | MLE | - |
testcase_06 | AC | 1,803 ms
35,492 KB |
testcase_07 | MLE | - |
testcase_08 | MLE | - |
testcase_09 | TLE | - |
testcase_10 | MLE | - |
testcase_11 | MLE | - |
testcase_12 | MLE | - |
testcase_13 | AC | 906 ms
27,684 KB |
testcase_14 | MLE | - |
testcase_15 | AC | 1,217 ms
31,520 KB |
testcase_16 | TLE | - |
testcase_17 | TLE | - |
testcase_18 | TLE | - |
testcase_19 | MLE | - |
testcase_20 | TLE | - |
testcase_21 | TLE | - |
testcase_22 | MLE | - |
testcase_23 | AC | 423 ms
22,436 KB |
testcase_24 | TLE | - |
testcase_25 | MLE | - |
testcase_26 | MLE | - |
testcase_27 | AC | 32 ms
17,956 KB |
testcase_28 | MLE | - |
testcase_29 | MLE | - |
ソースコード
def get_multi_dimensional_list(v, *args): """ :param v:初期値 :param args:各次元のサイズ :return:多次元のリスト """ import copy res = v if args: if isinstance(v, list): res = [copy.deepcopy(v) for i in range(args[-1])] else: res = [v] * args[-1] if len(args) > 1: return get_multi_dimensional_list(res, *args[:-1]) return res def solve(): A, B = input().split() L = max(len(A), len(B)) A = (("0" * (L + 1)) + A)[-L - 1:] B = (("0" * (L + 1)) + B)[-L - 1:] dp = get_multi_dimensional_list(0, L + 2, 2, 2, 2, 3, 8) dp[0][0][0][0][0][0] = 1 for i in range(L + 1): # 桁 for j in range(2): # A for k in range(2): # B for l in range(2): # 3がつくか for m in range(3): # 3の余り for n in range(8): # 8の余り a_i = int(A[i]) b_i = int(B[i]) lim_l = 0 if j else a_i lim_r = 9 if k else b_i if lim_l > lim_r: continue for number in range(lim_l, lim_r + 1): new_j = 1 if j or number > lim_l else 0 new_k = 1 if k or number < lim_r else 0 new_l = 1 if l or number == 3 else 0 new_m = (m * 10 + number) % 3 new_n = (n * 10 + number) % 8 dp[i + 1][new_j][new_k][new_l][new_m][new_n] += dp[i][j][k][l][m][n] % (1e9 + 7) res = 0 # 3がつく for i in range(2): for j in range(2): for m in range(3): res += sum(dp[L + 1][i][j][1][m][1:]) % (1e9 + 7) # 3の倍数 res += sum(dp[L + 1][i][j][0][0][1:]) % (1e9 + 7) print(int(res % (1e9 + 7))) solve()