题解:P9239 [蓝桥杯 2023 省 B] 填空问题
日期统计
直接遍历所有的数再判断日期非常繁琐,所以可以考虑遍历
void solve(void) {
int ans = 0;
int a[101]; for(int i = 1; i <= 100; i++) cin >> a[i]; //用输入的方式读取 100 个数
int days[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
for(int m = 1; m <= 12; m++) {
for(int d = 1; d <= days[m]; d++) {
int date[] = {2, 0, 2, 3, m / 10, m % 10, d / 10, d % 10};
int cnt = 0;
for(int i = 1; i <= 100; i++) {
if(a[i] == date[cnt]) cnt++;
if(cnt == 8) {ans++; break;}
}
}
}
cout << ans << endl;
//最后答案是 235
}
01 串的熵
由于本题已经把公式告诉我们了,所以只需要在
void solve(void) {
for(int i = 1; i <= 23333333 / 2; i ++) {
int j = 23333333 - i;
double h = 0 - (i * (i / 23333333.0) * log2(i / 23333333.0) + j * (j / 23333333.0) * log2(j / 23333333.0));
if(abs(h - 11625907.5798) < 0.01) {
cout << i;
return;
}
}
//答案是 11027421
}