令和3年試作問題
プログラミングの問題は、特定の言語には依存しない少し抽象的な形式で記述されています。ここでは、Pythonで解答を記述した例を示します。
第2問
プログラムの入力
プログラムの出力
不足部分を埋めるプログラム
問1
flowchart TB
A((開始)) --> B[入力データの設定]
B --> C[基準得票数の計算]
C --> D[基準得票数の出力]
D --> E((終了))
### 基準得票数 の処理
# 入力データ
Tomei =["A党","B党","C党","D党"]
Tokuhyo = [1200,660,1440,180]
giseki = 6
# 基準得票数の計算
sousuu = 0
for m in range(0,4):
sousuu = sousuu + Tokuhyo[m]
kizyunsuu = sousuu / giseki
# 基準得票数の出力
print("基準得票数",kizyunsuu)
基準得票数 580.0
flowchart TB
A((開始)) --> B[入力データの設定]
B --> C[基準得票数の計算]
C --> D[基準得票数の出力]
D --> E[比例配分の処理]
E --> F((終了))
### 基準得票数 の処理
# 入力データ
Tomei =["A党","B党","C党","D党"]
Tokuhyo = [1200,660,1440,180]
giseki = 6
# 基準得票数の計算
sousuu = 0
for m in range(0,4):
sousuu = sousuu + Tokuhyo[m]
kizyunsuu = sousuu / giseki
# 基準得票数の出力
print("基準得票数",kizyunsuu)
### 比例配分の処理
# 比例配分の計算と出力
print("比例配分")
for m in range(0,4):
print(Tomei[m]+":"+str(Tokuhyo[m]/kizyunsuu))
基準得票数 580.0
比例配分
A党:2.0689655172413794
B党:1.1379310344827587
C党:2.4827586206896552
D党:0.3103448275862069
問3
プログラムの出力
基本プログラム
### 基準得票数 の処理
# 入力データ
Tomei =["A党","B党","C党","D党"]
Tokuhyo = [1200,660,1440,180]
giseki = 6
Hikaku = [0,0,0,0] # 初期化する配列の定義が必要
for m in range(0,4): # 手順1
Hikaku[m] = Tokuhyo[m]
Tosen = [0,0,0,0]
tosenkei = 0
while tosenkei < giseki: # 手順4
max = 0
for i in range(0,4): # 手順2
if max < Hikaku[i]:
max = Hikaku[i]
maxi = i
Tosen[maxi] = Tosen[maxi] + 1
tosenkei = tosenkei + 1
Hikaku[maxi] = Tokuhyo[maxi]//(Tosen[maxi]+1) # 手順3
# print(Hikaku,end='')
# print(Tosen)
for k in range(0, 4): # 手順5
print(Tomei[k]+": "+str(Tosen[k])+"名")
A党: 2名
B党: 1名
C党: 3名
D党: 0名
拡張プログラム
### 基準得票数 の処理
# 入力データ
Tomei =["A党","B党","C党","D党"]
Tokuhyo = [1200,660,1440,180]
Koho = [5,4,2,3]
giseki = 6
Hikaku = [0,0,0,0] # 初期化する配列の定義が必要
for m in range(0,4): # 手順1
Hikaku[m] = Tokuhyo[m]
Tosen = [0,0,0,0]
tosenkei = 0
while tosenkei < giseki: # 手順4
max = 0
for i in range(0,4): # 手順2
if max < Hikaku[i] and Koho[i] >= Tosen[i] + 1:
max = Hikaku[i]
maxi = i
Tosen[maxi] = Tosen[maxi] + 1
tosenkei = tosenkei + 1
Hikaku[maxi] = Tokuhyo[maxi]//(Tosen[maxi]+1) # 手順3
# print(Hikaku,end='')
# print(Tosen)
for k in range(0, 4): # 手順5
print(Tomei[k]+": "+str(Tosen[k])+"名")
A党: 3名
B党: 1名
C党: 2名
D党: 0名