最后一题通过了 77.77%,不知道错在哪里了
```
#include <iostream>
#include <map>
using namespace std;
map<long long int, int> ma;
int solve(long long int n) {
if (n == 0LL) return 0;
if (n == 1LL) return 1;
if (ma[n] != 0) return ma[n];
if (n % 2 == 1) {
int ans = solve((n-1) / 2) + solve((n-1) / 2 + 1);
ma[n] = ans;
return ans;
} else {
int ans = solve(n / 2);
ma[n] = ans;
return ans;
}
}
int main() {
long long int n;
while(cin >> n) {
cout << solve(n+1) << endl;
}
return 0;
}
```