中文题,开8位 数组,保存每个号码重复的次数,按字典序输出 每个出现次数大于1的号码;
气死我了,把大写的K写成k ,WA了我9次啊!! 我个去!!
#include <iostream>
#include <iomanip>
using namespace std;
int num[10000000];
int get_num(char t)
{
if(t>='0' && t<='9') return t-'0';
if(t=='A' || t=='B' || t=='C')
return 2;
if(t=='D' || t=='E' || t=='F')
return 3;
if(t=='G' || t=='H' || t=='I')
return 4;
if(t=='J' || t=='K' || t=='L')
return 5;
if(t=='M' || t=='N' || t=='O')
return 6;
if(t=='P' || t=='R' || t=='S')
return 7;
if(t=='T' || t=='U' || t=='V')
return 8;
if(t=='W' || t=='X' || t=='Y')
return 9;
return -1;
}
int main()
{
int n,i,x,flag,k;
scanf("%d%*c", &n);
memset(num,0,sizeof(num));
flag=-1;
while(n--)
{
char s[100]; x=0;
scanf("%s", s);
for(i=0; i<strlen(s); i++)
{
k = get_num(s[i]);
if(k>=0)
x = x*10 + k;
}
num[x]++;
if(num[x]>=2 && flag<x)
flag = x;
}
if(flag==-1) printf("No duplicates.\n");
for(i=0; i<=flag; i++)
if(num[i]>=2)
{
printf("%03d-%04d %d\n", i/10000,i%10000,num[i]);
}
return 0;
}