map(long long int,long long int)不适用于key = 1000 000 000(在long long int范围内)

cod*_*212 0 c++ recursion

最近我问了一个问题,但是关于递归导致了这个问题

注意 - > count()该函数返回键K在映射容器中的出现次数.如果密钥存在于容器中,则返回1,因为映射仅包含唯一键.如果映射容器中不存在该键,则返回0.它几乎通过了所有的测试用例,但是1 000 000 000 根据long long int range值失败,它也应该通过这个,但是它给出了一些负值作为输出; 我认为这是容器地图的问题任何人都可以帮我解决地图上的错误吗?

    #include<bits/stdc++.h>
    using namespace std;
    map <long long int,long long int> dp;
    int exchange(long long int n){
        if(n<12)
            return n;
        if(dp.count(n))
            return dp[n];
        return dp[n] = exchange(n/2)+exchange(n/3)+exchange(n/4);
    }
    int main(){
     //   int t;
       // cin>>t;
        while(1){
      //      memset(dp,-1,sizeof(dp));
            long long int n;
            cin>>n;
            cout<<exchange(n)<<endl;
        }

    }
Run Code Online (Sandbox Code Playgroud)

jro*_*rok 6

问题是你的功能exchange- 它返回int,这是一个比它更窄的类型long long int.