記事一覧

2023日本数学オリンピック予選問題の中でプログラミングの練習問題にしたら面白そうな問題

はじめに 毎年、日本数学オリンピックの予選問題を趣味で解いています。その中で、プログラミングの練習問題にしたら面白いかなと思った2023年の問題を紹介します。 問題…

mersenne13
1年前
1

「Python で文字図形を描く」のコードを考えてみた

はじめに大森武さんの「Python で文字図形を描く」のコードを考えてみました。 図形1 四角形◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯ for _ in range(5): …

mersenne13
1年前
2

「paizaの森練習問題コンテスト過去問題3」をpythonで解いてみた

s = input()print(s[::-1]) s1, s2 = input().split()print(s1 + s2) s = input()print(s.lower()) n = int(input())capslock = Falseans = ""for _ in range(n): c …

mersenne13
2年前
1

paizaの「第1回P共通テスト過去問題 Q2: rot-x」をpythonで解いてみた

import collectionsn = int(input())s = input()t = input()l = []for i in range(n): l.append((ord(t[i]) - ord(s[i])) % 26)c = collections.Counter(l)x = c.most_c…

mersenne13
2年前

「paizaの森練習問題コンテスト過去問題2」をpythonで解いてみた

# 条件分岐はif文で記述することが推奨されているが、# 分岐が多くなるので、# dictionary(辞書)を使用して、可読性を高くしてみた。colour = { 1 : "white", 2 : …

mersenne13
2年前

「paizaの森練習問題コンテスト過去問題1」をpythonで解いてみた

# python にはswitch文やcase文がない。# 代わりに「if...elif...else」文で条件分岐を記述する。s = input()if s == "baseball": print(9)elif s == "soccer": prin…

mersenne13
2年前
1

2022 日本数学オリンピック予選 第9問 ヒント

問題$${1, 2, . . . , 1000}$$ の並べ替え $${(p_1, p_2, . . . , p_{1000})}$$ であって, 任意の $${1}$$ 以上 $${999}$$ 以下の整数 $${i}$$ に対して, $${p_i}$$ が $${…

mersenne13
2年前

2022日本数学オリンピック予選 第7問 ヒント

問題ヒント辺 $${AC}$$ 上に$${∠GDC=∠FDB}$$ となる点 $${G}$$ をとり、補助線 $${GD}$$ を引く。 解説図は自分で書いてください。点 $${E}$$ は 2 通りの取り方があり…

mersenne13
2年前

2022日本数学オリンピック予選 第8問 ヒント

次のように書き出せば求まります。 $$ \begin{array}{r|c:c:c:c:c:c} a_n & 1 & 2 & 3 & 4 & 5 & · · · \\ \hline {a_n}^2-(n+5)^2 & -35 & -45 & -55 & -65 & -75 & …

mersenne13
2年前
1

n進法をm進法へ変換するpythonコード

10進法を2進法へdecimal_number = input('10進数を入力してください ')d = int(decimal_number)ans = '' # ビット列を記録するための変数while d: r = d % 2 """ …

mersenne13
2年前
2

ユークリッドの互除法と再帰関数

ユークリッドの互除法$${a}$$, $${b}$$ を自然数とする。 $${a}$$, $${b}$$ の最大公約数は、次のようにして求めることができる。 $${a}$$ を $${b}$$ で割った余り $${r}$…

mersenne13
2年前
1

原始ピタゴラス数を高速に求める

原始ピタゴラス数生成公式$${m, n}$$ を次の 3 条件を満たす整数とする。 (1) $${m>n>0}$$ (2) $${m−n}$$ は奇数 (3) $${gcd(m,n)=1}$$ このとき,$${(a,b,c) = (m^2−n…

mersenne13
2年前
1
2023日本数学オリンピック予選問題の中でプログラミングの練習問題にしたら面白そうな問題

2023日本数学オリンピック予選問題の中でプログラミングの練習問題にしたら面白そうな問題

はじめに 毎年、日本数学オリンピックの予選問題を趣味で解いています。その中で、プログラミングの練習問題にしたら面白いかなと思った2023年の問題を紹介します。

問題1(問題文)

(Pythonコード)

愚直に 1 から順に試していくだけ。
while の練習に良いかな。

i = 1while True: j = (i + 10) ** 0.5 if j == int(j):

もっとみる
「Python で文字図形を描く」のコードを考えてみた

「Python で文字図形を描く」のコードを考えてみた

はじめに大森武さんの「Python で文字図形を描く」のコードを考えてみました。

図形1 四角形◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯

for _ in range(5): print("◯" * 5)

「 "◯" * 5 」の利用は、出題の意図と違うと思いますが。

print(("◯"*5 + "\n") * 5)

for も使っていません。「 "\n" 」で改行しま

もっとみる
「paizaの森練習問題コンテスト過去問題3」をpythonで解いてみた

「paizaの森練習問題コンテスト過去問題3」をpythonで解いてみた

s = input()print(s[::-1])

s1, s2 = input().split()print(s1 + s2)

s = input()print(s.lower())

n = int(input())capslock = Falseans = ""for _ in range(n): c = input().split() if c[0] == "capsloc

もっとみる
paizaの「第1回P共通テスト過去問題 Q2: rot-x」をpythonで解いてみた

paizaの「第1回P共通テスト過去問題 Q2: rot-x」をpythonで解いてみた

import collectionsn = int(input())s = input()t = input()l = []for i in range(n): l.append((ord(t[i]) - ord(s[i])) % 26)c = collections.Counter(l)x = c.most_common()[0][0]if len(c) == 1: print(f"

もっとみる
「paizaの森練習問題コンテスト過去問題2」をpythonで解いてみた

「paizaの森練習問題コンテスト過去問題2」をpythonで解いてみた

# 条件分岐はif文で記述することが推奨されているが、# 分岐が多くなるので、# dictionary(辞書)を使用して、可読性を高くしてみた。colour = { 1 : "white", 2 : "black", 3 : "red", 4 : "blue", 5 : "yellow", 6 : "green", 7 : "orange", 8 :

もっとみる
「paizaの森練習問題コンテスト過去問題1」をpythonで解いてみた

「paizaの森練習問題コンテスト過去問題1」をpythonで解いてみた

# python にはswitch文やcase文がない。# 代わりに「if...elif...else」文で条件分岐を記述する。s = input()if s == "baseball": print(9)elif s == "soccer": print(11)elif s == "rugby": print(15)elif s == "basketball": prin

もっとみる

2022 日本数学オリンピック予選 第9問 ヒント

問題$${1, 2, . . . , 1000}$$ の並べ替え $${(p_1, p_2, . . . , p_{1000})}$$ であって, 任意の $${1}$$ 以上 $${999}$$ 以下の整数 $${i}$$ に対して, $${p_i}$$ が $${i}$$ の倍数であるようなものはいくつあるか.
公益財団法人 数学オリンピック財団

ヒント1000 の移動先を考える。
移動でき

もっとみる

2022日本数学オリンピック予選 第7問 ヒント

問題ヒント辺 $${AC}$$ 上に$${∠GDC=∠FDB}$$ となる点 $${G}$$ をとり、補助線 $${GD}$$ を引く。

解説図は自分で書いてください。点 $${E}$$ は 2 通りの取り方がありますが、頂点 $${C}$$ に近い方で書いてください。

辺 $${AC}$$ 上に$${∠GDC=∠FDB}$$ となる点 $${G}$$ をとる。
$${△GCD}$$ と $$

もっとみる

2022日本数学オリンピック予選 第8問 ヒント

次のように書き出せば求まります。

$$
\begin{array}{r|c:c:c:c:c:c}
a_n & 1 & 2 & 3 & 4 & 5 & · · · \\
\hline
{a_n}^2-(n+5)^2 & -35 & -45 & -55 & -65 & -75 & · · ·
\end{array}
$$

$$
\begin{array}{r|c:c:c:c:c:c}
a_n

もっとみる

n進法をm進法へ変換するpythonコード

10進法を2進法へdecimal_number = input('10進数を入力してください ')d = int(decimal_number)ans = '' # ビット列を記録するための変数while d: r = d % 2 """ 新しく求めたビット r をstr型に変換し、 記録していたビット列 ans の左に結合する。 """ ans =

もっとみる

ユークリッドの互除法と再帰関数

ユークリッドの互除法$${a}$$, $${b}$$ を自然数とする。
$${a}$$, $${b}$$ の最大公約数は、次のようにして求めることができる。
$${a}$$ を $${b}$$ で割った余り $${r}$$ を求める
$${b}$$ を $${r}$$ で割った余り $${r_1}$$ を求める
$${r}$$ を $${r_1}$$ で割った余り $${r_2}$$ を求める

もっとみる

原始ピタゴラス数を高速に求める

原始ピタゴラス数生成公式$${m, n}$$ を次の 3 条件を満たす整数とする。
(1) $${m>n>0}$$
(2) $${m−n}$$ は奇数
(3) $${gcd(m,n)=1}$$
このとき,$${(a,b,c) = (m^2−n^2,2mn,m^2+n^2)}$$ は,原始ピタゴラス数である。逆に,すべての原始ピタゴラス数は上の形で表すことができる。

原始ピタゴラス数生成公式を

もっとみる