考虑最后有没1.

#include <cstdio>
#include <iostream>
#include <cstring>

using namespace std;

long long d[1000010];

int main() {
    int N;
    cin >> N;
    
    memset(d, 0, sizeof(d));
    d[0] = 1;
    for (int i = 1; i <= N; ++i) {
        if ((i & 1) == 1) {
            d[i] = d[i - 1];
        }
        else {
            d[i] = (d[i - 1] + d[i / 2])  % 1000000000;
        }
    }
    cout << d[N] << endl;
}
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐