結果
問題 | No.2280 FizzBuzz Difference |
ユーザー |
![]() |
提出日時 | 2023-04-21 23:09:00 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 160 ms / 2,000 ms |
コード長 | 3,247 bytes |
コンパイル時間 | 472 ms |
コンパイル使用メモリ | 82,056 KB |
実行使用メモリ | 78,240 KB |
最終ジャッジ日時 | 2024-11-06 16:34:44 |
合計ジャッジ時間 | 1,747 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 7 |
ソースコード
# lcm(a,b) ごとに繰り返す# 0, 3, 6, 9, 12, 15,# 0, 5, 10, 15,# 3/2/1/3/1/2/3# 0, 3, 6, 9, 12, 15, 18, 21# 0, 7, 14, 21# 3/3/1/2/3/2/1/3/3# 0, 5, 10, 15, 20, 25, 30, 35# 0, 7, 14, 21, 28, 35# 5 / 2 / 3 / 4 / 1 / 5 / 1 / 4 / 3 / 2 / 5# 1-4 ... 2 個ずつ 5 ... 3個# 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55# 0, 11, 22, 33, 44, 55# 5 / 5 / 1 / 4 / 5 / 2 / 3 / 5 / 3 / 2 / 5 / 4 / 1 / 5 / 5# 1-4... 2 個ずつ, 5 ... (差+1) 個# 0, 2, 4, 6# 0, 3, 6# 2/1/1/2import osimport sysfrom io import BytesIO, IOBaseBUFSIZE = 8192class FastIO(IOBase):newlines = 0def __init__(self, file):self._fd = file.fileno()self.buffer = BytesIO()self.writable = "x" in file.mode or "r" not in file.modeself.write = self.buffer.write if self.writable else Nonedef read(self):while True:b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))if not b:breakptr = self.buffer.tell()self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)self.newlines = 0return self.buffer.read()def readline(self):while self.newlines == 0:b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))self.newlines = b.count(b"\n")+(not b)ptr = self.buffer.tell()self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)self.newlines -= 1return self.buffer.readline()def flush(self):if self.writable:os.write(self._fd, self.buffer.getvalue())self.buffer.truncate(0), self.buffer.seek(0)class IOWrapper(IOBase):def __init__(self, file):self.buffer = FastIO(file)self.flush = self.buffer.flushself.writable = self.buffer.writableself.write = lambda s:self.buffer.write(s.encode("ascii"))self.read = lambda:self.buffer.read().decode("ascii")self.readline = lambda:self.buffer.readline().decode("ascii")sys.stdin, sys.stdout = IOWrapper(sys.stdin), IOWrapper(sys.stdout)input = lambda:sys.stdin.readline().rstrip("\r\n")from math import gcddef xgcd(a,b):prevx, nextx = 1, 0prevy, nexty = 0, 1while b:quotient = a//bnextx, prevx = prevx - quotient * nextx, nextxnexty, prevy = prevy - quotient * nexty, nextya, b = b, a % breturn prevx, prevydef naive(m,a,b,k):t = -10**18ans = 0for i in range(1, m+1):if i%a == 0 or i%b == 0:if i-t==k:ans += 1t = ireturn ansdef fast(m,a,b,k):ret = 0if k == a:tmp = m//aret += tmp - tmp*a//breturn retelse:x,y = xgcd(a,b)x*=k; y*=kr1 = x*a%(a*b)r2 = -y*b%(a*b)if r1 < r2:if r2 <= m:ret += 1else:if r1 <= m:ret += 1r1 = -x*a%(a*b)r2 = y*b%(a*b)if r1 < r2:if r2 <= m:ret += 1else:if r1 <= m:ret += 1return retT = int(input())for _ in range(T):m,a,b,k = map(int,input().split())#print(naive(m,a,b,k))if a>b: a,b = b,ag = gcd(a,b)if k % g != 0:print(0)continuea//=gb//=gm//=gk//=g# gcd(a,b) == 1l = a*bif k > a:print(0)continueif a==1:print(max(0, m-1))continuer = m//lans = 0m %= lif k==a:ans = (b-a+1)*r - 1elif k<a:ans = 2*rans += fast(m,a,b,k)print(max(0,ans))