2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

2023 一橋大学の数学(前期)を解いてみた & 整数問題をPythonで解かせてみた

Last updated at Posted at 2023-03-27

経緯

 今年も一橋大学志望の受験生を指導したということで、自分も同大学の問題を解いてみた。また、解析的に解ける整数問題などに関しては Python でも解いてみた(一応技術系のWebサイトなので)。詳しい解答過程は後ほど上げることとする。$\LaTeX$ で打つかどうかは気分次第かな。

問題

自分の解答

大問1

概要

 2項係数の問題。両辺を恐れずに階乗の形に変形し、冷静に計算できるかがポイント。自分の場合は、整数問題であるということに注視しすぎて、無駄に場合分けをしてしまったのでかなりここで時間をロスしてしまった。この問題は Python で解きやすかろうと思い、プログラムでも計算した。

自分の実装

Hitotubashi_Zenki_1.py
# 答えの組の保存
ans = []

# 階乗計算
def factorial(n):
    num = 1
    for i in range(n):
        num *= i+1
    return num

def C(n, k):
    return factorial(n) // (factorial(k) * factorial(n-k))

for n in range(2,21):
    for k in range(1,n-1):
        left_cal = C(n+2, k+1)
        right_cal = 2 * (C(n, k-1) +  C(n, k+1))
        if left_cal == right_cal:
            ans.append([n,k])
    
for ans_combination in ans:
    print(*ans_combination)

大問2

概要

 解の配置の問題。まず、接する条件について3次間数から接点を設定して考えることができるかどうかがポイント。こうすることで、もう一方に接するかどうかに関して判別式の条件に持ち込める。また、判別式の条件で計算後に正しく計算し、4次式から複2次式としてみなし、相加相乗平均の問題に持ち込めるかどうかがポイント(場合分けは必要になる)。

大問3

概要

 Pの条件を問題文から正しく計算し、ある球の周及び内部に存在するということに気づけるかどうかがポイント。また、四面体のP以外の3点が z=0 の平面上にあるということにも気づいておけば計算量をかなり減らせる。

大問4

概要

 格子点に割り振られる数字が $ x + y = k $ の直線上に沿う形で与えられているということに気づくことができるかどうか。また、$ x = 1 $ 上の点が $\displaystyle \sum_{s=1}^{k-1} s$ となることに気づけているかどうかがポイント。(1)ができれば、(2)はそれを用いて計算を簡略化すれば良い。また、具体的に $(m, n)$の組を求めるためには少し、解の範囲を不等式を狭める必要がある。こちらの(2)に関しても愚直に解析的に計算が可能なので、 Python で書いてみた。

Hitotubashi_Zenki_4.py
import sys

# x = 1 におけるf(1, n)の計算
def g(n):
    if n != 1:
        return g(n-1) + n
    else:
        return 1

# k = m + n
k = 2

while True:
    for m in range(1,k):
        n = k - m
        # 左辺の値を各々計算
        left_1st = g(m+n-1) - (m-1)
        left_2nd = g(m+n) - m
        left_3rd = g(m+n) - (m-1)
        left_4th = g(m+n+1) - m
        # 条件を満たす場合については、答えの組みを出力
        if left_1st + left_2nd + left_3rd + left_4th == 2023:
            print(m,n)
        # 左辺 > 4 * left_1st より、
        # それが2023を超えた場合はプログラムを終了
        if 4 * left_1st >= 2023:
            sys.exit()
    # ループを抜けた場合は次の直線上に移動
    k += 1

大問5

概要

 確率の問題。誰が何回目に勝つかという確率を反復試行であることを考慮して総和を計算すれば良い。

感想

 去年度の問題も同時期に解いていたのだが、個人的には去年よりも易化したと感じた。去年の4番の(2)のような難易度の問題もなく、計算量も少ないと感じた。自分がリラックスして測って解いた時間はちょうど制限時間である2時間ジャストで大問の順番通りに解いた。戦略的に解くとするならば、5 -> 3 -> 2 -> 4 -> 1 の順番で解いていたと思う。1, 4 に関しては、少し本番では考え方を理解するのにハマってしまう恐れがあるためである。これは、数学でまあまあ点数が必要だったのではないかと思われる。理系的には、やはりこの大学の問題はやや物足りない問題だろうが、文系受験生にとってはちょうどいいのだろうか。まあ、本番の空気感は受験生本人しかわからないであろう肌感覚なので、本番自分が受けていたとしたら解ききれていたかどうかはわからないが。プログラミング的な観点から考えると、競プロでも出てもおかしくない問題があったりするなと感じた(難易度B~Cレベル)。一橋とか京大とかは整数・確率分野の問題が多いので競プロで役立つ問題が比較的多いと思う。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?