# APCS實作題2022年6月第1題:數字遊戲
> 日期:2023年9月23日
> 作者:王一哲
> 題目來源:111年6月實作題第1題
> [ZeroJudge 題目連結](https://zerojudge.tw/ShowProblem?problemid=h082)
<br />
## 題目
### 問題描述
給三個介於 1 ~ 9 的整數 $A_1, A_2, A_3$。
先輸出一個正整數 $P$ 表示眾數數量,也就是出現最多次的數字的次數。
接下來將輸入的三個數字去除重複(剩下一個)後由大到小依序輸出。
<br />
### 輸入說明
三個介於 1~9 的整數。
子題配分
- 60%:每個數字都不相同
- 40%:無額外限制
<br />
### 輸出說明
先輸出一個數值 $P$ 表示出現最多次的數字個數。接下來將輸入的三個數字去除重複(剩下一個)後由大到小依序輸出。
<br />
### 範例一:輸入
```
6 6 6
```
### 範例一:正確輸出
```
3 6
```
<br />
### 範例二:輸入
```
7 9 7
```
### 範例二:正確輸出
```
2 9 7
```
<br />
### 範例三:輸入
```
4 1 8
```
### 範例三:正確輸出
```
1 8 4 1
```
<br />
## 提示
範例測資一,出現最多次的數字是 $6$,共出現 $3$ 次,並且只有出現 $6$ 這個數字,因此輸出 $3~6$。
範例測資二,出現最多次的數字是 $7$,共出現 $2$ 次,並且出現了 $7$ 和 $9$,因為集合需要由大到小輸出,因此輸出 $2~9~7$。
範例測資三,三個數字各出現 $1$ 次,集合由大到小輸出,因此輸出 $1~8~4~1$。
<br /><br />
## Python 程式碼
於 ZeroJudge 測試結果,最長運算時間約為 21 ms,使用記憶體最多約為 3.3 MB,通過測試。
```python=
A = list(map(int, input().split())) # 讀取3個數字存入串列 A
A.sort(reverse=True) # 由大到小排序
C = [0]*9 # 統計 1 ~ 9 數字的個數
for a in A: C[a-1] += 1
P = max(C) # 眾數的數量 P
print(P, end=" ") # 印出 P 並以空格結尾
mode = C.index(P) + 1 # 找出眾數的值
num = P # 計算眾數剩下數量用的變數
for i in range(len(A)): # 依序讀取 A 的內容
if A[i] == mode and num > 1: # 如果 A[i] 是眾數且目前數量大於1
num -= 1 # 將數量減1
else: # 若以上條件不成立,印出 A[i] 並以空格結尾,若是最後一個元素則以換行符號結尾
print(A[i], end=" " if i < len(A)-1 else "\n")
```
<br /><br />
## C++ 程式碼
於 ZeroJudge 測試結果,最長運算時間約為 3 ms,使用記憶體最多約為 348 kB,通過測試。
```cpp=
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int A[3], C[9] = {0}; // 儲存資料用的陣列 A,統計 1 ~ 9 數字的個數用的陣列 C
for(int i=0; i<3; i++) cin >> A[i]; // 讀取3個數字存入陣列 A
sort(A, A+3, greater<>()); // 由大到小排序
for(int i=0; i<3; i++) C[A[i]-1]++; // 統計 A 當中 1 ~ 9 數字的個數
int P = 0, mode = 0; // 眾數 mode 及數量 P
for(int i=0; i<9; i++) {
if (C[i] > P) {
P = C[i];
mode = i+1;
}
}
cout << P << " "; // 印出 P 並以空格結尾
int num = P; // 計算眾數剩下數量用的變數
for(int i=0; i<3; i++) { // 依序讀取 A 的內容
if (A[i] == mode && num > 1) { // 如果 A[i] 是眾數且目前數量大於1
num--; // 將數量減1
} else { // 若以上條件不成立,印出 A[i] 並以空格結尾,若是最後一個元素則以換行符號結尾
cout << A[i] << " \n"[i == 2];
}
}
return 0;
}
```
<br /><br />
---
###### tags:`APCS`、`Python`、`C++`