链接http://poj.org/problem?id=1002
一道水题,之前把电话号码转化成string,用map来做,TLE了,直接用数字做A了
#include<cstdio> #include<algorithm> #include<iostream> using namespace std; #define MAX 100010 int num[MAX]; char str[100]; int map[100]; int main() { freopen("poj1002.txt", "r", stdin); for(int i = 0; i < 10; ++ i) { map[i + '0'] = i; } map['A'] = map['B'] = map['C'] = 2; map['D'] = map['E'] = map['F'] = 3; map['G'] = map['H'] = map['I'] = 4; map['J'] = map['K'] = map['L'] = 5; map['M'] = map['N'] = map['O'] = 6; map['P'] = map['R'] = map['S'] = 7; map['T'] = map['U'] = map['V'] = 8; map['W'] = map['X'] = map['Y'] = 9; int n, sum; scanf("%d", &n); for(int k = 0; k < n; ++ k) { scanf("%s", str); sum = 0; for(int i = 0; str[i] != '\0'; ++ i) { if(str[i] == '-') { continue; } sum = sum*10 + map[str[i]]; } num[k] = sum; } sort(num, num + n); bool flag = true; int cnt; for(int i = 0; i < n; ++ i) { cnt = 1; while(i + 1 < n && num[i] == num[i+1]) { i++; cnt++; } if(cnt != 1){ printf("%03d-%04d %d\n", num[i-1]/10000, num[i-1]%10000, cnt); flag = false; } } if(flag) { printf("No duplicates. \n"); } return 0; } |