第十届蓝桥杯省赛C/C++B组题解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Dragon_fxl/article/details/88776273

一、

答案: 490

二、

答案: BYQ

三、

代码:

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 30000000;
int a[MAXN];
int main() {
    int N = 20190324;
    a[1] = a[2] = a[3] = 1;
    for (int i = 4; i <= N; ++i)
        a[i] = (a[i - 1] + a[i - 2] + a[i - 3]) % 10000;
    printf("%d\n", a[N]);
    return 0;
}

答案: 4659

四、

思路:

让i <= j <= k, 然后判断i, j, k是否含2和4就行了

代码:

#include <bits/stdc++.h>
using namespace std;
bool isOK(int x) {
    for (/* */; x > 0; x /= 10)
        if (x % 10 == 2 || x % 10 == 4) return false;
    return true;
}
int main() {
    int N = 2019;
    int cnt = 0;
    for (int i = 1; i < N / 3; ++i)
        if (isOK(i))
            //k = N - i - j > j
            for (int j = i + 1; N - i - j > j; ++j)
                if (isOK(j) && isOK(N - i - j)) ++cnt;
    cout << cnt << endl;
    return 0;
}

答案: 40785

猜你喜欢

转载自blog.csdn.net/Dragon_fxl/article/details/88776273