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 |
Re:这个题其实不用考虑那么复杂,直接统计就可以了,给大家看我的简单代码,时间500MS,慢了点,但很简单In Reply To:这个题其实不用考虑那么复杂,直接统计就可以了,给大家看我的简单代码,时间500MS,慢了点,但很简单 Posted by:zwjowen at 2010-04-12 15:56:00 > #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