注:在输出数字的时候,不要忘了开头0补齐。
#include <stdio.h>
#include <string.h>
#include <map>
using namespace std;
int main(int argc, char *argv[]) {
map<int, int> mm;
int num[26] = {2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 0, 7, 7, 8, 8, 8, 9, 9, 9, 0};
char in[200];
int str;
int n;
scanf("%d", &n);
int i, j, k;
for (i = 0; i < n; i++) {
str = 0;
scanf("%s", in);
for (j = 0; j < strlen(in); j++) {
if (in[j] != '-') {
if (in[j] <= '9') {
str = str * 10 + in[j] - '0';
} else {
str = str * 10 + num[in[j] - 'A'];
}
}
}
if (mm.find(str) != mm.end()) {
mm[str] = mm[str] + 1;
} else {
mm[str] = 1;
}
}
bool flag = false;
for (map<int, int>::iterator iter = mm.begin(); iter != mm.end(); ++iter) {
if (iter->second > 1) {
printf("%03d", iter->first / 10000);
printf("-");
printf("%04d", iter->first % 10000);
printf(" %d\n", iter->second);
flag = true;
}
}
if (flag == false) printf("No duplicates.\n");
return 0;
}