はいどーもー
乙pyです。
暇なので受験シーズンだし
有名中学の算数の問題をプログラムで解けないかと
思ったりしたわけですね。
インターネットの
Googleで調べたんですが
そこで問題が難しそうな学校を見つけてしまったんですね。
皆さん
難しい中学校って知ってます?
自分は近所の中学校に行ったので
知らないんですけど
問題を解いてみたんですねー
というものの第三弾です。
動画解説はこちら
さて最初の問題は
2桁と4桁の整数同士の結果を問う問題なので
試行回数が増えますね。
変数a と x の2重ループになるという考えで進みました。
整数aとxをかけると119868
整数aの10と1の位を0に置き換えたものを
変数bすると
求める数の条件は
a * x == 119868
かつ
b * x == 117600
になりますね。
あとは複数出たaの中から
最大の整数を求めれば終了です。
答えは次のようなプログラムになりました。
お次の問題は
数字の穴埋め問題ですね
さて
整数ABCDEF に6をかけると
整数DEFABC になるという問題
普通に解くなら少しづつ試す感じになりますが
プログラムは力技で解いていきます。
6桁分の整数を全部条件に当てはめて解いてみます。
for i in range(100000,1000000):
そして
その変数 i を6桁のABCDEFと仮定して
それに6をかけてDEFABCになれば
正解が導き出せるわけです。
数値文字列にして、インデックスで各桁の数値を
変数a,b,c,d,e,fに置き換えます。
あとは条件に当てはまるかを
if文で書くだけです。
ABCDEFを求めるプログラムはこうなりました。
DEFは末尾3桁をとれば良いですね。
プログラムで解く際には
試行回数が少ない方が効率が良いので
いかに試行回数を減らすことができるかも
ポイントになりますが
今回は力技でした。
乙pyです。
暇なので受験シーズンだし
有名中学の算数の問題をプログラムで解けないかと
思ったりしたわけですね。
インターネットの
Googleで調べたんですが
そこで問題が難しそうな学校を見つけてしまったんですね。
皆さん
難しい中学校って知ってます?
自分は近所の中学校に行ったので
知らないんですけど
問題を解いてみたんですねー
というものの第三弾です。
動画解説はこちら
さて最初の問題は
2桁と4桁の整数同士の結果を問う問題なので
試行回数が増えますね。
変数a と x の2重ループになるという考えで進みました。
整数aとxをかけると119868
整数aの10と1の位を0に置き換えたものを
変数bすると
求める数の条件は
a * x == 119868
かつ
b * x == 117600
になりますね。
あとは複数出たaの中から
最大の整数を求めれば終了です。
答えは次のようなプログラムになりました。
r = [] for a in range(1000,10000): for x in range(10,100): b = int(str(a)[0:2] +'00') if a * x == 119868 and b * x == 117600: r.append(a) print(a,x) print(max(r))
お次の問題は
数字の穴埋め問題ですね
さて
整数ABCDEF に6をかけると
整数DEFABC になるという問題
普通に解くなら少しづつ試す感じになりますが
プログラムは力技で解いていきます。
6桁分の整数を全部条件に当てはめて解いてみます。
for i in range(100000,1000000):
そして
その変数 i を6桁のABCDEFと仮定して
それに6をかけてDEFABCになれば
正解が導き出せるわけです。
数値文字列にして、インデックスで各桁の数値を
変数a,b,c,d,e,fに置き換えます。
あとは条件に当てはまるかを
if文で書くだけです。
ABCDEFを求めるプログラムはこうなりました。
for i in range(100000,1000000): x =str(i) a,b,c,d,e,f = x[0],x[1],x[2],x[3],x[4],x[5] if i*6==int(d+e+f+a+b+c): print(x) break
DEFは末尾3桁をとれば良いですね。
プログラムで解く際には
試行回数が少ない方が効率が良いので
いかに試行回数を減らすことができるかも
ポイントになりますが
今回は力技でした。
コメントする