输出的时候,为什么我写的cout方式就不能在poj中ac呢???

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;
}

这两个输出不等价,下面的有空格,上面的没有。

cout是c++的,printf是c,估计支持问题。