からD + Jプログラミングの挑戦:、次のような問題があるKattis
ディックは、D = 12歳です。私たちがこれを言うとき、それはディックが生まれてから少なくとも12年であり、13年ではないことを意味します。
ディックとジェーンには3匹のペットがいます:犬にスポットを当て、パフ・ザ・キャット、イエット・ザ・タートル パフが生まれた時、スポットは歳になった。パフはYertleが生まれたときにp 歳だった。 Yertleが であるとき、スポットはyy歳だった。 Spotの年齢、パフの年齢、およびYertleの年齢の合計は、Dickの年齢(d)とJaneの年齢(j)の合計である になります。 Spot、Puff、 、Yertleは何歳ですか?
入力はs、p、y、jで、必要な出力はスポットの年齢、パフの年齢、および年齢です。
import sys
import math
d = 12
for line in sys.stdin:
line = [int(x) for x in line.strip("\n").split()]
s = line[0]
p = line[1]
y = line[2]
j = line[3]
yertle = (d+j-y-p)/3.0
difference = yertle - math.floor(yertle)
if difference > 0.5:
# for the 0.66666 cases
spot = puff = int(math.ceil(yertle+p))
yertle = int(math.floor(yertle))
else:
# for the 0.33333 cases
yertle = int(math.floor(yertle))
puff = yertle + p
spot = d+j - puff - yertle
print spot,puff,yertle
が、それは以下のような特定の入力に正しくありません:以下のように
マイ溶液であったS = 5、p = 5、yが10、J = 10 =。これらの仕様のため、実際の犬の年齢は:spot = 12.333、puff = 7.333、yertle = 2.333です。しかし、整数除算を行うので、代わりに12,7,2を取得します。ただし、これらの結果は、$$ spot + puff + yertle = dick + jane $$ ルールを満たしていません。他の誰かが私が間違いを犯している場所や、これにどのように接近/解決すべきかについて他のアイデアを持っていますか?
スポット= 13.000、パフ= 7.333、yertle = 2.333を満たす入力のS = 5、P = 5、Y = 10の値に依存し、 j = 10である。 SpotとYertleの実際の年齢差はy + [0,1] – hk6279
@ hk6279ですが、PuffとYertleの違いはp + [0,1]と同様です。この場合、スポット= 12.333、パフ= 8、yertle = 2.333、そうでしょうか? 0.6666をスポットに付け加えて、パフやイヤールではないことをどうやって知っていますか? – Giggs
同じルールが(パフとイェールル)と(パフとスポット)に適用されます。しかし、スポット= 12.333、パフ= 8、yertle = 2.333は、12.333-8 = 4.333であるため正しくありません。 – hk6279