はいどーもー
乙pyです。

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

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

皆さん

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

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


動画解説はこちら


 


まずはじめの問題は
有名中学の入試問題.002

これの解き方は非常に簡単です。

4つの整数のうち
基準になるのは a で
求める答えも a
a と他の整数b,c,dとの関係はそれぞれ

b = a + 1
c = b + 1
d = c + 1
と1つづつ増えています。

なのでaを基準にして全て変数に置き換えます。

aは基準の数値なので
試行する数値にするため for文の対象にします。

求める答えの条件は
a * b + b * c + c * d + d * a が2400ということなので
この条件に合致した場合に表示させるだけです。

プログラムはこのようになりました。
 for a in range(30):
    b=a+1
    c=b+1
    d=c+1
    if a*b+b*c+c*d+d*a==2400:
        print(a)
        break

非常に簡単ですね

次の問題は
有名中学の入試問題.026

17で割ると3余り、13で割ると7余る
これが出力する際の条件1つ目ですね

もう一つは3桁の整数で最大

なのでまずは3桁の整数のなかで上記の条件に当てはまるものを
全て探します。

探し出す数値を x とすると

for x in range(100,1000):

で3桁の整数を試行できます。

あとは最大値を求めるやり方ですが
条件に当てはまるものが複数でるため

それをリストに格納しておいて
その格納された数値の中で一番大きいものを求めます。

プログラムは
result = []
for x in range(100,1000):
    if x%17==3 and x%13==7:
        result.append(x)
print(max(result))

このようになりますね。
プログラミング初学者の方々には
こういった問題を解くのは非常に勉強になると
思いました。

引き続き
プログラムで入試問題を
解いていきたいと思います。