poj的1002題
#include<iostream>
#include<string>
#include<string.h>
#include<map>
#include<iomanip>
using namespace std;
typedef char S[111];
map<int,int>M;
int main(){
int n,l,i,t;
S num;
while(cin>>n){
M.clear();
while(n--){
cin>>num;
l=strlen(num);
t=0;
for(i=0;i<l;++i){
switch(num[i]){
case'-':continue;
case'A':case'B':case'C':t=t*10+2;break;
case'D':case'E':case'F':t=t*10+3;break;
case'G':case'H':case'I':t=t*10+4;break;
case'J':case'K':case'L':t=t*10+5;break;
case'M':case'N':case'O':t=t*10+6;break;
case'P':case'R':case'S':t=t*10+7;break;
case'T':case'U':case'V':t=t*10+8;break;
case'W':case'X':case'Y':t=t*10+9;break;
default:t=t*10+(num[i]-'0');
}
}
if(M.find(t)==M.end()){
M.insert(map<int,int>::value_type(t,1));
}
else
++M[t];
}
bool find=false;
for(map<int,int>::iterator it=M.begin();it!=M.end();++it)
{
if(it->second>1){
find=true;
//這裡是我寫的cout的輸出,為什麼不能再poj中ac呢,下面注釋掉的printf方法可以ac
cout<<fixed<<setprecision(3)<<it->first/10000<<"-"<<fixed<<setprecision(4)<<it->first%10000<<" "<<it->second<<endl;
//printf("%03d-%04d %d\n",it->first / 10000,it->first % 10000,it->second);
}
}
if(!find){
puts("No duplicates.");
}
}
return 0;
}
這兩個輸出不等價,下面的有空格,上面的沒有。