POJ 1002 487-3279
1 //hash直接过 2 #include<cstdio> 3 #include<cstring> 4 int hash[10010000]={0}; 5 int zhuanzhi(int n) 6 { 7 int sum=1,i; 8 for(i=1;i<n;i++) 9 sum*=10; 10 return sum; 11 } 12 int zhuanhuan(char f[]) 13 { 14 int sum=0,i; 15 int t=strlen(f); 16 for(i=t-1;i>=0;i--) 17 { 18 sum=sum+(f[i]-'0')*zhuanzhi(t-i); 19 } 20 return sum; 21 } 22 int main() 23 { 24 int zong,i,j; 25 scanf("%d",&zong); 26 while(zong--) 27 { 28 char f[100],g[100]; 29 scanf("%s",f); 30 int s=-1; 31 for(i=0;f[i]!='\0';i++) 32 { 33 switch(f[i]) 34 { 35 case '0': 36 g[++s]='0'; 37 break; 38 case '1': 39 g[++s]='1'; 40 break; 41 case 'A':case 'B':case 'C':case '2': 42 g[++s]='2'; 43 break; 44 case 'D':case 'E':case 'F':case '3': 45 g[++s]='3'; 46 break; 47 case 'G':case 'H':case 'I':case '4': 48 g[++s]='4'; 49 break; 50 case 'J':case 'K':case 'L':case '5': 51 g[++s]='5'; 52 break; 53 case 'M':case 'N':case 'O':case '6': 54 g[++s]='6'; 55 break; 56 case 'P':case 'R':case 'S':case '7': 57 g[++s]='7'; 58 break; 59 case 'T':case 'U':case 'V':case '8': 60 g[++s]='8'; 61 break; 62 case 'W':case 'X':case 'Y':case '9': 63 g[++s]='9'; 64 break; 65 } 66 } 67 g[++s]='\0'; 68 hash[zhuanhuan(g)]++; 69 } 70 int count=0; 71 for(i=0;i<10000000;i++) 72 if(hash[i]>1) 73 { 74 printf("%03d-%04d %d\n",i/10000,i%10000,hash[i]); 75 count++; 76 } 77 if(count==0)printf("No duplicates.\n"); 78 return 0; 79 }