題目描述
在大里高中,每年仲凱校長都宣布一句「精神口號」,例如去年是 PASSION,今年是 BELIEVE。學務處長年蒐集歷屆的精神口號紀錄,一共蒐集了 N 屆。
學務處發現,有些口號裡同一個字母出現不只一次,例如 PASSION 裡 S 出現兩次、BELIEVE 裡 E 出現三次,覺得這種「重複用字」的口號特別有記憶點,於是想統計一下歷屆的狀況。
每一屆的紀錄包含:
- 該屆的屆別
year(正整數,代表第幾屆,屆別彼此不重複) - 該屆的精神口號
slogan(僅由大寫英文字母 A 到 Z 組成)
只要口號中,有任何一個字母出現次數達到 2 次以上(含 2 次),該屆就視為「重複用字口號」。
請寫一個程式,讀入全部 N 屆的紀錄後,輸出:
- 「重複用字口號」的總屆數。
- 每一屆「重複用字口號」的屆別,以及該屆口號中「出現次數最多的字母」與其出現次數,依屆別由小到大輸出。若同一屆有多個字母的出現次數並列最高,取字母順序(A 到 Z)最小的那一個。
輸入格式
輸入共 N+1 行。
- 第 1 行:一個正整數 N,代表蒐集的屆數。
- 第 2 行到第 N+1 行:第 i+1 行有兩個以恰一個空白分隔的資料,
year_i與slogan_i,代表第 i 屆的屆別與該屆精神口號。
限制
- 1 ≤ N ≤ 1000
- 1 ≤ year_i ≤ 10000,且所有 year_i 皆不相同
- slogan_i 只包含大寫英文字母 A 到 Z,長度介於 1 到 20 之間
輸出格式
- 第 1 行:一個整數,代表「重複用字口號」的總屆數(範圍為 0 到 N)。
接下來,對於每一屆「重複用字口號」,依屆別由小到大各輸出一行,格式為:
屆別 字母 次數
三個欄位之間各以一個空白分隔。
若「重複用字口號」總屆數為 0,則第 1 行輸出 0 後,不再輸出任何後續內容。
範例一
範例輸入:
5
1 PASSION
2 BELIEVE
3 DREAM
4 TOGETHER
5 SUCCESS
範例輸出:
4
1 S 2
2 E 3
4 E 2
5 S 3
5 屆口號中,PASSION(S 出現 2 次)、BELIEVE(E 出現 3 次)、TOGETHER(T 與 E 皆出現 2 次,取字母順序較小的 E)、SUCCESS(S 出現 3 次)皆屬於重複用字口號,共 4 屆;DREAM 每個字母都只出現 1 次,不屬於重複用字口號。依屆別由小到大輸出,即為第 1、2、4、5 屆。
範例二
範例輸入:
3
6 DREAM
7 UNITY
8 FOCUS
範例輸出:
0
三屆口號都沒有任何字母重複出現,因此只輸出一行 0。
配分方式
| 子題 | 配分 | 比對方式 |
|---|---|---|
| 子題 1 | 40 分 | 只看輸出第一行是否正確 |
| 子題 2 | 60 分 | 完整輸出需完全正確 |
範例測資
範例輸入 1
5 1 PASSION 2 BELIEVE 3 DREAM 4 TOGETHER 5 SUCCESS
範例輸出 1
4 1 S 2 2 E 3 4 E 2 5 S 3
範例輸入 2
3 6 DREAM 7 UNITY 8 FOCUS
範例輸出 2
0
請先登入後再提交程式碼
討論與題解
載入討論區…