#include <iostream>
#include <map>
#define I return
#define AK 0
#define IOI ;
using namespace std;
int dfs(int,map<int,int>);
signed main() {
int n;scanf("%d",&n);
map<int,int> x;
printf("%d",dfs(n,x));
I AK IOI
}
int dfs(int cur,map<int,int> x){
if (cur==1)return 1;
if (cur==0)return 0;
if (x.find(cur)!=x.end())return x[cur];
int r=1;
for (int i = 1; i <= cur/2; ++i) {
r+= dfs(i,x);
}
x[cur]=r;
return r;
}
题目 评测