rt,为什么下面这份代码在运行时会出现一些很大的bug,比如最后那个if里面mp[now]只有少数几个的值是正确的的,是double的精度问题?但是我本地 #define double long double了也没用(
map<double,int> mp;
map<double,int>::iterator it;
int n=read(),m=read(),tot=0;
double d=100.0000000/n,del=d-(int)d,now=del;
while(now<0.5) now+=del;
mp[now]=0;
while(now>0) now=del,mp.insert(make_pair(now,++tot));
for(int i=1,x;i<=m;i++) x=read(),a[i].percent=x*100.0/n;
for(int i=1;i<=m;i++){
now=a[i].percent-floor(a[i].percent),ans+=(int)a[i].percent;
if(now>=0.5){
a[i].need=0;
continue;
}it=mp.find(now),a[i].need=(*it).second;
if(a[i].percent>d){
cout<<now<<' '<<mp[now]<<' '<<a[i].need<<endl;
}
}