結果
問題 | No.2017 Mod7 Parade |
ユーザー |
![]() |
提出日時 | 2025-03-20 20:25:35 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 152 ms / 2,000 ms |
コード長 | 1,665 bytes |
コンパイル時間 | 167 ms |
コンパイル使用メモリ | 82,836 KB |
実行使用メモリ | 106,476 KB |
最終ジャッジ日時 | 2025-03-20 20:26:52 |
合計ジャッジ時間 | 3,626 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 18 |
ソースコード
MOD = 10**9 + 7def main():import sysinput = sys.stdin.readdata = input().split()idx = 0K = int(data[idx])idx += 1inv9_mod7 = 4 # 9^(-1) mod7elements = []for _ in range(K):D = int(data[idx])idx += 1L = int(data[idx])idx += 1if D == 0:x_mod7 = 0pow10_L_mod7 = 1for _ in range(L % 6):pow10_L_mod7 = (pow10_L_mod7 * 10) % 7else:exponent = L % 6if exponent == 0:exponent = 6pow10_L = pow(10, exponent, 7)numerator = (pow10_L - 1) % 7x_mod7 = (D * numerator * inv9_mod7) % 7pow10_len_i = 1exponent_L = L % 6if exponent_L == 0 and L != 0:exponent_L = 6pow10_len_i = pow(10, exponent_L, 7)elements.append((x_mod7, pow10_len_i))prev_dp = [0] * 7ans = 0for x_mod7, pow10_len_i in elements:temp_dp = [0] * 7for m_prev in range(7):if prev_dp[m_prev]:new_m = (m_prev * pow10_len_i + x_mod7) % 7temp_dp[new_m] = (temp_dp[new_m] + prev_dp[m_prev]) % MODtemp_dp[x_mod7] = (temp_dp[x_mod7] + 1) % MODcurrent_sum = 0for m in range(7):current_sum = (current_sum + m * temp_dp[m]) % MODans = (ans + current_sum) % MODfor m in range(7):prev_dp[m] = (prev_dp[m] + temp_dp[m]) % MODprint(ans % MOD)if __name__ == "__main__":main()