rt,感觉已经考虑得很全面了 /kk
#include <iostream>
using namespace std;
int p[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int Calc(int x) {
int ans = 0;
if (x < 10) ans += 13;
while (x) {
int k = x % 10;
if (k == 0) ans += 13;
if (k == 1) ans++;
if (k == 2 || k == 7 || k == 8 || k == 9) ans += 2;
if (k == 3) ans += 3;
if (k == 4) ans += 5;
if (k == 5 || k == 6) ans += 4;
x /= 10;
}
return ans;
}
int main()
{
int ans = 0;
for (int y = 2000; y <= 2023; y++) {
int a = Calc(y);
for (int m = 1; m <= 12; m++) {
int b = Calc(m);
if (m == 2) {
if (y % 400 == 0 || y % 100 != 0 && y % 4 == 0)
p[m] = 29;
else
p[m] = 28;
}
for (int d = 1; d <= p[m]; d++) {
int c = Calc(d);
int tot = a + b + c;
if (tot > 50) ans++;
}
}
}
int a = Calc(2024);
for (int m = 1; m <= 3; m++) {
int b = Calc(m);
if (m == 2) p[m] = 29;
for (int d = 1; d <= p[m]; d++) {
int c = Calc(d);
int tot = a + b + c;
if (tot > 50) ans++;
}
}
int b = Calc(4);
for (int d = 1; d <= 13; d++) {
int c = Calc(d);
int tot = a + b + c;
if (tot > 50) ans++;
}
cout << ans << endl;
return 0;
}