0

私はSPOJ問題FLIBを解決していて、このようなマップを使用してこれを実装しようとしました-

long long FiboSum(long long n) {
    if(n==1||n==0) return n;
    if(fiboDict.count(n)) return (long long) fiboDict.at(n);
    if(n%2==0) { 
        //calculate term -- value to that key
        fiboDict.insert(pair<long,long>(n,term));
    }
    else { 
        //calculate term
        fiboDict.insert(pair<long,long>(n,term));
    }
    return (long long) fiboDict.at(n);
}

fiboDictはマップですが、問題を計算する必要がありますが( 0 <= n < 2^51)、KEY値はそのような高い値を保持できず、エラーが発生します

terminate called after throwing an instance of 'std::out_of_range' what():  
map::at

どうすれば大きな値を保持できますか?または代替案がある場合は提案してください。

4

1 に答える 1

2

のマップを作成しない理由:

pair<long long,long long>

それから?

于 2012-09-14T00:32:21.187 に答える