水题,直接贴代码,注意几种控制浮点输出的方法:e格式,以指数形式输出实数。g格式:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。
代码:
//poj 3940 //sep9 #include <iostream> using namespace std; const int maxL=64; int cnt[maxL+10]; double color[maxL]; double area[maxL]; int main() { double p=0.10000; int n,w; while(scanf("%d%d",&n,&w)==2&&(n+w)){ memset(cnt,0,sizeof(cnt)); int max_cnt=-1; for(int i=0;i<n;++i){ int x; scanf("%d",&x); ++cnt[x/w]; max_cnt=max(max_cnt,cnt[x/w]); } int L; for(L=maxL;L>=0;--L) if(cnt[L]) break; for(int i=0;i<L;++i) color[i]=(L-i)*1.0/L; for(int i=0;i<L;++i) area[i]=cnt[i]*1.0/max_cnt; double ans=0.0; for(int i=0;i<L;++i) ans+=color[i]*area[i]; printf("%.10lg\n",ans+0.01); } return 0; }
时间: 2024-11-12 05:38:49