前提・実現したいこと
Atcoder ABC 131 C問題
以下のコードを提出すると3個だけWAと表示されます。いくら考えても誤っている部分がわからず困っています。
問題文
整数 A,B,C,D が与えられます。A 以上 B 以下の整数のうち、C でも D でも割り切れないものの個数を求めてください。
制約
1≤A≤B≤10^18
1≤C,D≤10^9
入力はすべて整数である
URL
https://atcoder.jp/contests/abc131/tasks/abc131_c
発生している問題・エラーメッセージ
ある入力に対して以下のコードで導き出される答えが間違っている。
該当のソースコード
Python
1import math 2 3a,b,c,d = map(int, input().split()) 4 5lcm = c*d / math.gcd(c,d) 6 7def num(i): 8 ans = int(b/i) - int(a/i) 9 if a % i == 0: 10 ans +=1 11 return ans 12 13lcm_num = num(lcm) 14 15cd_num = num(c) + num(d) 16 17num = cd_num - lcm_num 18 19print(b-a+1-num)
試したこと
AB範囲内のC,D,最小公倍数のそれぞれの倍数の個数を計算し解答を求めようとしました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
思いついただけで検証していないのですが、
・A=B
・ CやDがBよりも大きい
・C=1あるいはD=1
・C=D
などの特殊な場合について、考慮漏れがあるのかもしれません。
回答1件
あなたの回答
tips
プレビュー