ステップ1:問題の意味を理解する
最初に問題文を読んでみましょう。
https://paiza.jp/works/mondai/c_rank_skillcheck_archive/leftover
問題の要旨としては、「最初は生のままで売り、売れ残ったら惣菜にする。それでも売れ残ったら残り物として計算する。」といった感じです。
ステップ2:計算式を考える。
1.生のままの販売
m[kg]の生鮮食品を仕入れ、そのうちp[%]が売れました。よって、売れた量は、m×(p/100)[kg] です。したがって、売れ残った量は、 m-m×(p/100)=m×(1-p/100)[kg]
2.惣菜としての販売
次に、売れ残った量(m×(1-p/100)[kg])をすべて惣菜にします。この惣菜のうちq[%]が売れました。よって、惣菜で売れた量は、m×(1-p/100)×(q/100)[kg] です。したがって、惣菜として売れ残った量は、 m×(1-p/100)-m×(1-p/100)×(q/100)=m×(1-p/100)×(1-q/100)[kg]
3.最終的な売れ残り量
1と2より、生鮮食品のうち最終的に売れ残った量は、 m×(1-p/100)×(1-q/100)[kg]
ステップ3:プログラムを書く
ステップ2で作った計算式をもとにプログラムを書きます。
m,p,q=map(int,input().split())#入力を受け取る
keisan=m*(1-p/100)*(1-q/100)#計算する
print(keisan)#出力する
ステップ4:1行にする
print((lambda m,p,q:m*(1-p/100)*(1-q/100))(*map(int,input().split())))
解説
1.input().split() でスペース区切りの入力を取得し、map(int, ...) で整数に変換する。
2.lambda m,p,q:m*(1-p/100)*(1-q/100) という無名関数(ラムダ関数)を使い、引数 m,p,q を受け取って計算を行う。
3.1で取得した値が lambda 関数に引数として渡される。
4.結果が出力される。
補足
2の無名関数を普通の関数で書くとこうなります。
#無名関数
(lambda m,p,q:m*(1-p/100)*(1-q/100))
#ふつうのかんす
def keisan(m,p,q):
return m*(1-p/100)*(1-q/100)
注意:プログラムを1行で書くと可読性が著しく低下するので、共同作成プロジェクト等ではやらないようにしましょう