pythonで共通テスト(数学)を無理やりプログラミングで解く

1.プログラムの概要

1.剰余の定理で因数分解をします。

2.2次方程式の解の公式に当てはめます。

3.自分で計算した答えを出力します。

4.2次方程式の平方根の部分を計算してその数が0よりも大きいことを確認してその数が兵法数かどうかを調べます。

2.プログラム

import math
kotae = []                                                     #kotaeを空の配列を代入
x2 = 2                                                         #x2に2を代入
x = 1                                                          #xに1を代入
t = -10                                                        #tに-10を代入
for i in range(2,0,-1):                      #iに2~0まで-1ずつ減らして繰り返す
    if x2 % i == 0:                                            #もしx2をiで割ったあまりが0なら
        for y in range(-abs(t),abs(t)):                        #yにtの絶対値×-1からtの絶対値まで繰り返す
            if x2 * (y/i) ** 2 + x * (y/i) + t == 0:           #もし(x2×y÷i)^2+x×y÷i+tが0の時
                kotae.append([i,y])                            #kotaeに[i,y]を追加する
                break                                          #for文を抜け出す
print("ア:" + str(kotae[0][0]))                                #ア:とkotaeの上から1番目,左から1番目を出力する
print("イ:" + str(kotae[0][1] * -1))                           #イ:とkotaeの上から1番目,左から2番目×-1を出力する
print("ウ:" + str(kotae[1][1]))                                #ウ:とkotaeの上から2番目,左から2番目を出力する
x = 5                                                          #xに5を代入する
t = -5                                                         #tに-5を代入する
print("エ:" + str(x))                                          #エ:とxを繋げた文字を出力する
print("オカ:" + str(x ** 2 - 4 * x2 * t))                      #オカ:とx^2-4*x2*tを繋げた文字を出力する
print("キ:" + str(2 * x2))                                     #キ:と2*x2を繋げた文字を出力する
a = 5                                                          #aに5を代入する
b = 65                                                         #bに65を代入する
c = 2                                                          #cに2を代入する
print("ク:" + str(a))                                          #ク:とaを繋げた文字を出力する
print("ケコ:" + str(b))                                        #ケコ:とbを繋げた文字を出力する
print("サ:" + str(c))                                          #サ:とcを繋げた文字を出力する
print("シ:" + str(math.floor((a + math.sqrt(b)) / c)))         #シ:とa+√b÷c の切り捨てを繋げた文字を出力する
c = 0                                                          #cに0を代入する
d = 0                                                          #dに0を代入する
while True:                                                    #ずっと
    a = 2                                                      #aに2を代入する
    b = 4 * c - 3                                              #bに4×c-3を代入する
    e = 2 * c ** 2 - c - 11                                    #eに2×c^2-c-11を代入する
    if b ** 2 - 4 * a * e < 0:                                 #もしb^2-4×a×eが0より小さいなら
        break                                                  #ループを抜け出す
    else:                                                      #でなければ
        if math.sqrt(b ** 2 - 4 * a * e) % 1 == 0:             #もし√(b^2-4×a×e)を1で割った余りが0なら
            d += 1                                             #dに1を追加する
    c += 1                                                     #cに1を追加する
print("セ:" + str(d))                                          #セ:とdを繋げた文字を出力する

3.プログラミングする中で難しかった点

・自分で計算するところが難しかった。

・平方数かどうかを判定するところが難しかった。

4.リンク

小学生が共通テスト(数学)を無理やりプログラミングで解く2021

コメント

タイトルとURLをコピーしました