一、题目
二、解决代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long a = 23333333 / 2;
double ans=0;
long long jie = 0;
for(long long i=1; i<a; i++)
{
long long j = 23333333 - i;
double p0 = 1.0 * i / 23333333;
double p1 = 1.0 * j / 23333333;
ans = -1.0 * p0 * log(p0) / log(2) * i - 1.0 * p1 * log(p1) / log(2) * j;
if( abs(ans - 11625907.5798) <= 0.0001)
{
printf("%lf\n",ans);
jie = i;
break;
}
}
cout << jie << endl;
return 0;
}
三、代码分析
四、 细微修改