2012-09-14 3 views
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.

+0

Pourquoi utilisez-vous 'long long' dans le code, mais pas pour la clé? –

+0

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

Répondre

2

Pourquoi ne pas vous faire carte de:

pair<long long,long long> 

alors?

Questions connexes