Я не делю на ноль, и в моем коде нет типа данных с плавающей запятой, я все еще получаю исключение с плавающей запятой.
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
unsigned long long int t,n;
cin>>t;
while(t--)
{
cin>>n;
unsigned long long int deno = pow(10,n-1),count=2,sum = 0,f1=1,f2=1;
while(1){
sum = f1+f2;
f1 = f2;
f2 = sum;
count++;
if((int)(sum/deno)>0){
cout<<count<<endl;
break;
}
}
}
return 0;
}
Все предыдущие вопросы об одном и том же имели аналогичную проблему деления на ноль, но переменная deno никогда не может быть равна нулю, как n>=2
.
Предыдущие исследования с моей стороны:
- "Исключение с плавающей запятой" в коде, не содержащем float< /а>
- Исключение с плавающей запятой С++ Почему и что это такое?
Постановка задачи: https://www.hackerrank.com/contests/projecteuler/challenges/euler025/problem
Он проходит 2 тестовых случая и терпит неудачу 2. Все тестовые случаи являются скрытыми. Изображение результата
При передаче ввода 1 50 мы можем воспроизвести ошибку. Подробности:
GDB trace: Reading symbols from solution...done. [New LWP 15127] Core
was generated by `solution'. Program terminated with signal SIGFPE,
Arithmetic exception.
#0 main () at solution.cc:23
23 if((int)(sum/deno)>0){
#0 main () at solution.cc:23
deno
и смотрите, равно ли оно нулю. - person alter igel   schedule 12.07.2018std::pow()
работает только с числами с плавающей запятой. - person BessieTheCookie   schedule 12.07.2018Arithmetic1
думал, что он справится сint
- person scohe001   schedule 12.07.20181 50
- person bolov   schedule 12.07.2018unsigned long long
может состоять только из 19 цифр, а задача требует 5000? Дажеlong double
может содержать только до 308 цифр (конечно, с ошибкой с плавающей запятой). Вам понадобится новый подход. - person BessieTheCookie   schedule 12.07.2018