我正在解决 SPOJ 问题 FLIB我已经尝试使用这样的 map 来实现它 -
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
是 map ,但问题需要我计算 ( 0 <= n < 2^51)
但是 KEY 值不能保持这么高的值,我得到了错误
terminate called after throwing an instance of 'std::out_of_range' what():
map::at
我怎样才能让它拥有大的值(value)?或者如果有其他选择,请提出建议。
最佳答案
你为什么不制作 map :
pair<long long,long long>
然后呢?
关于C++ std::map 运行超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12416615/