令和3年試作問題

Table of Contents

プログラミングの問題は、特定の言語には依存しない少し抽象的な形式で記述されています。ここでは、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名