赞
踩
问题描述:
设x为出现0的次数,则1出现次数为23333333-x,最后代入公式从1开始遍历即可:
#include <bits/stdc++.h> using namespace std; const int all=23333333; const double num=11625907.5798; int main() { for(double i=1;i<=all;i++) { double x=i/all; double y=(all-i)/all; double tmp=-x*log2(x)*i-y*log2(y)*(all-i); if(fabs(tmp-num)<=0.0001) { cout<<(long long)i<<endl; break; } } return 0; }
注:由于浮点数精度问题,所以只要两数相差<=0.0001就可当作相等。
结果:11027421
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。