はいどーもー
乙pyです。

暇なので受験シーズンだし
有名中学の算数の問題をプログラムで解けないかと
思ったりしたわけですね。

インターネットの
Googleで調べたんですが
そこで問題が難しそうな学校を見つけてしまったんですね。

皆さん

難しい中学校って知ってます?

自分は近所の中学校に行ったので
知らないんですけど
問題を解いてみたんですねー

というものの第六弾です。


動画解説はこちら



始めの問題
有名中学の入試問題.018


はい
非常に簡単な問題です。

1,2,3同時に答えを導くことができます。

コードは

ans1,ans2,ans3 = [],[],[]
for i in range(100,1000):
    if i%3==0 and i%111!=0:
        ans1.append(i)
    if i%2==0 or i%11==0:
        ans2.append(i)
    if (i%2==0 or i%11==0) and (i%3==0 and i%111!=0):
        ans3.append(i)
3桁の整数の分だけforループで1つ1つ調べて行くだけですね。
割り切れる と 割り切れない
の複合条件になるところがポイントでしょうか?

条件の優先順位のつけ方と and  or などの使い方が
問題を解くキーになりそうですね。


次の問題
有名中学の入試問題.016

この問題は2段構えとしました。

まずは
A,B,Cの仕事量がどのくらいになるのかというのを
計算しておかないと

ABCを1台づつ使った際の仕事量が計算できないです

from  itertools  import product

for a,b,c in product(range(1,10),range(1,10),range(1,10)):
    if (a+b)*35 == (a+b*3)*20 and (a+b)*35 == (a*2+c*5)*14:
        print(a,b,c)
        break

これでABCの仕事量が計算できました。
A:5
B:3
C:2

あとは元々
AとBで35日かかった仕事なので
ABCでX日掛かるかを求めれば良いだけですね。

a,b,c = 5,3,2
for x in range(35):
    if (a+b+c)*x == (a+b) *35:
        print(x)
        break

さすがに簡単すぎて
皆さん飽きてきましたよね?

プログラミング向きの
歯ごたえのある問題があると
いいですねーーー

まだまだ続きます