【C++】已通过
需要采用递推,递归和递归+动态规划的方式都会出现一些问题,栈溢出
#include<iostream>
using namespace std;
#define MAXINT 1000000000
#define MAXN 1000000
int mem[MAXN + 1];
int f(int n) {
for (int i = 2; i <= n; i++) {
if (i % 2 == 0) {
mem[i] = (mem[i - 1] + mem[i / 2]) % MAXINT;
}
else {
mem[i] = mem[i - 1];
}
}
return mem[n];
}
int main() {
int N;
mem[1] = 1;
while (cin >> N) {
/*for (int i = 1; i <= N; i++) {
mem[i] = -1;
}*/
cout << f(N) << endl;
}
return 0;
}