Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

С++ последовательность Фибоначчи Почему на N 93 появляется отрицательное число ведь идет сложение

Валера Валера Ученик (98), закрыт 5 лет назад
#include
using namespace std;
int main()
{
long long q,n,Fk,F1,F2;
F1=1;
F2=1;
q=3;
cout << "vvedite n = ";
cin >> n;
cout <<"[1]= "<< F1<<" \n"<<"[2]= "<<F2<<endl;
for (int i=3;i<=n;i++)
{
Fk=F1+F2;
cout <<"["<<q<<"]= "<< Fk <<"\n";
q=q+1;
F1=F2;
F2=Fk;
}

}
Лучший ответ
Иван Сигаев Искусственный Интеллект (150190) 5 лет назад
Потому, что число 12200160415121876738 ( в 16-ричном формате a9 4f ad 42 22 1f 27 02 ) получает в знаковом бите единичку

PS:А следующее число 19740274219868223167 (1 11 f3 8a d0 84 0b f6 bf) вообще в 8 байт не поместится
Валера ВалераУченик (98) 5 лет назад
как увеличить доступное кол-во байт, не 8, а 32 к примеру ?
Подключить библиотеку длинной арифметики или написать свою реализацию сложения в длинной арифметике. Или использовать C#, в котором уже встроен класс для работы с длинной арифметикой.
Остальные ответы
Imobilazer Искусственный Интеллект (222395) 5 лет назад
Скорей всего потому что превысит лимит типа переменной
Похожие вопросы