プロが教えるわが家の防犯対策術!

[問題]
庭に何匹かの動物がいます。これらはそれぞれ、2 本の足を持つ鶴か 4本の足を持つ亀のいずれかです。高橋くんは、「庭の動物の総数は X匹で、それらの足の総数は Y本である」と発言しています。この発言が正しいような鶴と亀の数の組合せが存在するか判定してください。


入力
3(X) 8(Y)

出力
YES

[自分のコード]
a,b = map(int,input().split())

c = (b-2*a)/2

if a-c>0:
print('YES')

else:
print('NO')

どこが間違っているのか分かりませんんでした。Pythonに詳しい方教えてください。

A 回答 (3件)

例えば 「3 7」と入れると「YES」と表示されます。


亀0.5匹、鶴2.5匹です
... おかしいですよね?



まずは、プログラムのことを忘れて「組合せが存在するか判定」する方法を考えましょう。
ある複数の条件が全て成立しているときだけ、組合せが存在します。
    • good
    • 1

#! /usr/bin/python3



## 上のShebangはUNIX/Linuxの場合。
## Windowsの場合は、代わりに
## @python -x "%~f0" %* & exit /b %errorlevel%
## にする。

import sys
import numpy as np

## numpyはPython用の超強力数学ライブラリ。
## 入手は
## https://numpy.org/
## から。

A = np.matrix([
 [1, 1],
 [2, 4]
 ])

if __name__ == '__main__':
 Y = np.matrix([
  [int(sys.argv[1])],
  [int(sys.argv[2])]
  ])

 X = np.linalg.solve(A,Y)

 blist = [obj.is_integer() and obj >= 0 for obj in X.transpose().tolist()[0]]

 if blist[0] and blist[1]:
  print('YES')
 else:
  print('NO')
    • good
    • 0

これではどうですか?


splitの使い方と、入力値を変えてみました。

入力
3,8

出力
YES

[自分のコード]
a,b = map(int,input().split(","))

c = (b-2*a)/2

if a-c>0:
print('YES')
else:
print('NO')
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング