公司最近新來了一位助理小明,剛來的第一天長官請小明幫忙把剛處理完的案件檔案分類。每個案件都有一個專屬編號,編號由六個數字所組成,最後面三個數字為其類別編號,其中每十個連續類別編號會被歸在同一個資料夾中。
舉例來說,類別編號 000 到 009 歸為第 0 號資料夾、類別編號 010 到 019 歸為第 1 號資料夾、以此類推。因此,若拿到檔案編號為 103472 之檔案則會被放到第 47 號資料夾中。
請你幫小明順利完成第一天的分類工作。
範例測資
範例輸入 | 範例輸出 |
---|---|
輸入第一行為一個整數 N (1 ≤ N ≤ 2000) 代表檔案數,接下來共有 N 行表示每個檔案的編號 Si (000000 ≤ Si ≤ 999999,1 ≤ i ≤ N)。 | 每一行輸出資料夾編號及此資料夾中檔案個數,中間以一個空白隔開。只需輸出有放檔案的資料夾編號,且編號由小到大排列。 |
1 000000 | 0 1 |
5 232944 123941 201322 234941 231320 | 32 2 94 3 |
5 987012 342221 223120 126641 127643 | 1 1 12 1 22 1 64 2 |
解題思路
可以使用字串來收檔案編號,並且取出字串的第三和第四個字元,這個就是資料夾的編號。
宣告一個 Map<string, int>,Key 值為資料夾的編號,Value 為這個資料夾中有多少檔案,每次收到檔案編號的時候就將 Map[資料夾編號]++。
範例程式碼-ZeroJudge G796: 檔案分類 (Files)
#include <iostream>
#include <map>
using namespace std;
int main() {
cin.sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
map<int, int>MAP;
for (int i = 0; i<N; i++)
{
string str;
cin >> str;
string tmp = "";
tmp += str[3];
tmp += str[4];
MAP[stoi(tmp)]++;
}
for (auto it:MAP)
{
cout << it.first << " " << it.second << "\n";
}
}
//ZeroJudge G796
//Dr. SeanXD