| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
这个题其实不用考虑那么复杂,直接统计就可以了,给大家看我的简单代码,时间500MS,慢了点,但很简单#include<iostream>
#include<string.h>
using namespace std;
char str[100];
int len;
int REFER[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 };
int weight[10000000];
int POW[7]={1000000,100000,10000,1000,100,10,1};
char out[9];
int main()
{
memset(weight,0,sizeof(weight));
int n;
scanf("%d",&n);
int num,index;
//统计
for(int mem=0;mem<n;mem++){
scanf("%s",str);
len=strlen(str);
num=0;
index=0;
for(int i=0;i<len;i++){
if(str[i]>='0' && str[i]<='9')
num+=(str[i]-'0')*POW[index++];
else if(str[i]>='A' && str[i]<='Z')
num+=(REFER[int(str[i]-'A')])*POW[index++];
}
weight[num]++;
}
//输出
int xx=0;
out[8]='\0';
for(int i=0;i<10000000;i++){
if(weight[i]>=2){
for(int j=0;j<8;j++)
out[j]='0';
out[3]='-';
int temp=i;
int k=7;
while(temp>0){
if(k==3)
k--;
out[k]='0'+(temp-(temp/10)*10);
temp/=10;
k--;
}
printf("%s %d\n",out,weight[i]);
xx++;
}
}
if(xx==0)
printf("No duplicates.\n");
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator