Saturday 21 March 2009

POJ ( acm.pku.edu.cn ) 1002

需要说的是,这道题很诡异,用G++编译会超时,得用万恶的C++



#include <iostream>
#include <map>
#include <iomanip>
using namespace std;

int main()
{
typedef unsigned int uint;
int N; char s[128]; uint t;
map<uint,uint> m;
for(cin>>N;N;--N){
cin>>s; t=0;
for(char* i=s;*i;++i){
if(*i<='9'&&*i>='0') {
t*=10; t+=*i-'0';
} else if (*i<='Z'&&*i>='A') {
t*=10; t+="22233344455566677778889999"[*i-'A']-'0';
} else continue;
}
++m[t];
}
int n=0;
for(map<uint,uint>::const_iterator i=m.begin();i!=m.end();++i){
if (i->second>1) {
cout<<setfill('0')<<setw(3)<<i->first/10000
<<"-"<<setfill('0')<<setw(4)<<i->first%10000
<<" "<<i->second<<endl;
++n;
}
}
if (n==0)
cout<<"No duplicates."<<endl;
return 0;
}

No comments:

Post a Comment