c ++ std :: map выполняется out_of_range

Я решаю проблему SPOJ педераст и я попытался реализовать это с помощью карт, как это —

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

Как я мог заставить это держать большие значения? или, если есть альтернатива, пожалуйста, предложите.

0

Решение

Почему вы не делаете карту:

pair<long long,long long>

затем?

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]