#不正解コード
Xを全地点から引き、それらの最大公約数を求める。
Python
1from math import gcd 2from functools import reduce 3 4N, X = map(int, input().split()) 5x = list(map(int, input().split())) 6 7x = [el - X for el in x] 8 9ans = reduce(gcd, x) 10print(ans)
#正解コード
Xを全地点から引いたものの絶対値の、最大公約数を求める。
Python
1from math import gcd 2from functools import reduce 3 4N, X = map(int, input().split()) 5x = list(map(int, input().split())) 6 7x = [abs(el - X) for el in x] "⇦ココ 8 9ans = reduce(gcd, x) 10print(ans)
#質問
問題の性質上、「距離」を考えるわけなので全て絶対値をつけて正数として扱うべきなのは当然ではあるのですが、自分が試してみた入力例等では問題なく不正解コードの方でも期待通りに作動しました。また、gcdに色々な負の値を入れて試してみたのですが、行った範囲では全て自分の手計算と合う結果(ほんの一(二)例だと、gcd(3,-6)=gcd(3,6)=3, gcd(-4,-8)=gcd(4,8)=4となります)となり、上の問題でなぜ不正解が出力されるのかが確認できませんでした。もしmath.gcdというモジュールの性質上、引数の片方乃至は両方に負の値が与えられた時、その(それらの)値の絶対値が与えられた同じ動作をするとも限らないと言ったような注意すべき点があれば、ご教授いただければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/08 08:30