質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

3379閲覧

python3 配列から合計がXに成るようにY個取り出す

Untitled_Sample

総合スコア192

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/03/03 16:19

編集2018/03/03 16:48

y個の袋に、飴a個、ガムb個、のどちらかが入ります。
用意された飴とガムの合計がx個です。

python

1x=8 #飴とガムの合計 2y=5 #袋の個数 3a=1 #1袋に入れる飴の個数 4b=2 #1袋に入れるガムの個数

#出力結果

2 # 飴 2袋 3 # ガム 3袋

現状

l=[] [l.append(a) for _ in range(y)]#袋個分追加 [l.append(b) for _ in range(y)]#袋個分追加 print(l)

合計がxに成るように配列からy個、取り出したい思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

(追記がなされる前から回答を考えていましたので、リスト内包表記は活用しておりません。悪しからず。)

これはつるかめ算の問題ですから、つるかめ算で考えましょう。(以下簡略化のため前の過程の結果を(1.)のように表すとします。)

  1. 全て亀だと仮定し、鶴亀の総数 * 亀の足の本数を計算する。(仮の足の本数です。)
  2. (1.) - 実際の足の数を計算する。
  3. (2.) / 足の本数の差が鶴の総数
  4. 鶴亀の総数 - 鶴の総数が亀の総数

そして今回は

  • 実際の足の本数 -> x
  • 鶴亀の総数 -> y
  • 鶴の足の本数 -> a
  • 亀の足の本数 -> b

と置き換えれば解くことができます。

これらをコード化すると以下のようになります。

python

1# coding: utf-8 2 3def turukame(x,y,a,b): 4 kame_legs = max(a,b) 5 turu_legs = min(a,b) 6 delta = kame_legs - turu_legs 7 8 turu_num = (y*kame_legs - x)//delta 9 kame_num = y - turu_num 10 11 return (turu_num,kame_num) 12 13if __name__=="__main__": 14 x=8 #飴とガムの合計 15 y=5 #袋の個数 16 a=1 #1袋に入れる飴の個数 17 b=2 #1袋に入れるガムの個数 18 a_ans,b_ans = turukame(x,y,a,b) 19 print(a_ans,"#飴") 20 print(b_ans,"#ガム")

投稿2018/03/03 16:50

編集2018/03/03 17:08
namnium1125

総合スコア2043

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Untitled_Sample

2018/03/03 16:55

中学校の問題だったんですか。 色々考え過ぎて、混乱してた様です。
namnium1125

2018/03/03 16:59

言うのもなんですが、ぶっちゃけると小学校の問題です。。 とは言ってもまぁ、方程式が出てきた瞬間に皆さん忘れるんですよね...(^ ^;
namnium1125

2018/03/03 17:07

それと解決後にすみません。。ミスがありましたので修正しました。m(_ _)m 私も小学生以下でした笑
guest

0

1次方程式を書いて、それをといて、解をそのまま print してみました。

python

1x = 8 #飴とガムの合計 2y = 5 #袋の個数 3a = 1 #1袋に入れる飴の個数 4b = 2 #1袋に入れるガムの個数 5 6# 次の方程式を解く (p, q を求める) 7# y = p + q 8# x = p * a + q * b 9 10p = (x - y * b) // (a - b) # 飴の個数 11q = y - p # ガムの個数 12 13print(p, "#飴") 14print(q, "#ガム")

投稿2018/03/04 00:03

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問