Улитка ползет по вертикальному шесту высотой 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 тесте. Какой же алгоритм решения?
Минимальное n, при котором
(A - B) * (n - 1) + A >= H
то есть
n = ceiling((H - A) / (A - B)) + 1
#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;
}
Проблема была в том, что нужно было использовать числа с плавающей точкой и делать округления, вместо использования целых чисел
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости