0
Je suis la résolution de problèmes de SPOJ FLIB et j'ai essayé la mise en œuvre de cette aide de cartes comme cela -C++ std :: carte fonctionne out_of_range
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
le plan, mais le problème a besoin de moi calculer pour (0 <= n < 2^51)
mais KEY valeur ne peut pas contenir de telles valeurs élevées, et je reçois Erreur
terminate called after throwing an instance of 'std::out_of_range' what():
map::at
Comment pourrais-je le faire tenir de grandes valeurs? ou S'il y a une alternative, veuillez suggérer.
Pourquoi utilisez-vous 'long long' dans le code, mais pas pour la clé? –
Oh mon dieu, comme c'est idiot ... Je suis désolé si vous avez perdu votre temps, je pense que c'est l'insomnie. – rohitpal