# 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++`
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.