Задача про улитку

168
16 ноября 2018, 13:40

Улитка ползет по вертикальному шесту высотой H метров, поднимаясь за день на A метров, а за ночь спускаясь на B метров. На какой день улитка доползет до вершины шеста?

Пытался решить таким образом:

#include <iostream>
using namespace std;
int main() {
    long long int H, A, B;
    cin >> H >> A >> B;
    cout << (H / (A - B) - (A - (H % (A - B))) / (A - B)) + 1;
return 0;
}

Но программа падает на 5 тесте. Какой же алгоритм решения?

Answer 1

Минимальное n, при котором

(A - B) * (n - 1) + A >= H

то есть

n = ceiling((H - A) / (A - B)) + 1
Answer 2
#include <iostream>
#include<cmath>
using namespace std;
int main()
{
    double a,h,b; 
cin>> h>> a>> b ;
double days = ((h-a)>=0) ? h-a:0; 
days = ceil(days/(a-b))+1;
cout<<days<<endl;
 }

Проблема была в том, что нужно было использовать числа с плавающей точкой и делать округления, вместо использования целых чисел

READ ALSO
Состояние гонки данных

Состояние гонки данных

Есть ли что-то "опасное" в том, что два потока будут одновременно инкрементировать одну переменную? Я имею ввиду, может ли произойти такое,...

206
Кто готов дожить до 2038 года?

Кто готов дожить до 2038 года?

Когда-то это казалось недостижимымНо пришло время, и даже PVS стал на это ругаться (при сборке 32-битности, само собой - а необходимость в этом...

136
Проблемы с Jackson и ResultSet JAVA

Проблемы с Jackson и ResultSet JAVA

У меня spring mvcЯ хожу в базу (PostgreSQL) вот так вот : select array_to_json(array_agg(t1)) from shops as t1

152
VIM Android IDE

VIM Android IDE

Подскажите плагины с помощью которых можно полноценно разрабатывать android приложения

199