本题链接:2.01串的熵 - 蓝桥云课 (lanqiao.cn)
思路:
主要注意,比较两个精度高的浮点数时,需要用到abs(a-b) < 0.0001,不能直接用==
代码:
#include<iostream>
#include<cmath>
using namespace std;
int main() {
double S = 11625907.5798;
double n = 23333333;
for (int i = 0; i < n ; i++) {
double f0 = i ;
double f1 = n - i;
double nowS = 0;
nowS -= (f0 / n) * log2(f0 / n) * f0 + (f1 / n )*log2(f1 / n) * f1;
if (fabs(nowS - S) <0.0001) {
cout << i;
break;
}
}
return 0;
}