結果
問題 | No.2280 FizzBuzz Difference |
ユーザー | square1001 |
提出日時 | 2023-04-21 21:46:07 |
言語 | Python3 (3.12.2 + numpy 1.26.4 + scipy 1.12.0) |
結果 |
AC
|
実行時間 | 182 ms / 2,000 ms |
コード長 | 881 bytes |
コンパイル時間 | 268 ms |
コンパイル使用メモリ | 12,544 KB |
実行使用メモリ | 10,880 KB |
最終ジャッジ日時 | 2024-11-06 15:15:23 |
合計ジャッジ時間 | 2,002 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 31 ms
10,752 KB |
testcase_01 | AC | 145 ms
10,880 KB |
testcase_02 | AC | 160 ms
10,880 KB |
testcase_03 | AC | 113 ms
10,880 KB |
testcase_04 | AC | 182 ms
10,880 KB |
testcase_05 | AC | 147 ms
10,880 KB |
testcase_06 | AC | 153 ms
10,880 KB |
testcase_07 | AC | 150 ms
10,880 KB |
ソースコード
import math # extended GCD algorithm # from: https://onlinejudge.u-aizu.ac.jp/solutions/problem/NTL_1_E/review/6080963/lloyz_nt/Python3 def rec_gcd(a, b): if b == 0: return a, 1, 0 d, y, x = rec_gcd(b, a % b) y -= a // b * x return d, x, y def solve(m, a, b, k): g = math.gcd(a, b) if g != 1: if k % g != 0: return 0 return solve(m // g, a // g, b // g, k // g) if k > a: return 0 if k == a: lim = m // a * a return lim // a - lim // b + lim // (a * b) - 1 _, x, y = rec_gcd(a, b) y *= -1 x1, y1 = x * k % b, y * k % a z1 = x1 * a if z1 == 0: z1 = a * b x2, y2 = x * -k % b, y * -k % a z2 = y2 * b if z2 == 0: z2 = a * b answer = 0 answer += max((m - z1 + a * b) // (a * b), 0) answer += max((m - z2 + a * b) // (a * b), 0) return answer t = int(input()) for _ in range(t): m, a, b, k = map(int, input().split()) print(solve(m, a, b, k))