У цій задачі сказано, що у день посадки садівник повинен був використати відро води для кожного з дерев, в останній день \frac 1 N, в передостанній \frac 1 {N-1} і так далі. Тобто садівник поливає дерева такою кількістю води 1, \frac 1 2, \frac 1 3, ..., \frac 1 N. З цього випливає, що садівник повинен поливати дерева днів.
Нам не відомо в який день садівник почав поливати дерева, але ми знаємо, що він поливав дерева в останній день, та загалом використав не більше ніж \frac 1 2 відра води. Тому ми можемо підрахувати скільки днів садівник поливав дерева рухаючись з останнього дня.
Знаючи загальну кількість днів коли садівник планував поливати дерева () та кількість днів коли садівник поливав дерева ми можемо знайти , кількість днів які садівник пропустив.
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m = 0;
cin>>n; // Зчитуємо кількість дерев
double v = 0;
for (int i = n; i >= 1; --i) {
v += 1.0 / i;
if (v > 0.5) { // Переконаємось, що загальна кількість води не перевищує половину відра
break;
}
m++; // Підрахуємо кількість днів у які садівник поливав дерева
}
cout<<n - m<<"\n";
}