最后一题通过了 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;
}

```