Игрушка йо-йо
состоит из катушки, на которую намотана нитка. Если, держа за конец нитки,
отпустить катушку, то она будет, вращаясь, сначала опускаться вниз, а затем по
инерции подниматься вверх. Но высота, на которую катушка поднимется, будет в k
раз меньше, чем высота, с которой она опустилась. Будем считать, что катушка
остановилась, если высота её очередного подъема не превышает 1.
Напишите
программу, которая по длине нитки l и коэффициенту k подсчитает
количество подъемов катушки до остановки. Например, пусть l = 17 и k
= 2, тогда катушка будет подниматься на высоты 8.5, 4.25, 2.125, 1.0625, а
затем остановится. Таким образом получится 4 подъема.
Вход. Два целых числа l (1 ≤ l ≤ 109) и k (2 ≤ k ≤ 100).
Выход. Выведите одно
число – количество подъемов.
Пример
входа |
Пример
выхода |
17 2 |
4 |
циклы
Промоделируем
процесс движения катушки и подсчитаем количество ее подъемов. Пусть l –
текущая высота катушки. Она после опускания будет подниматься вверх, только
если уровень ее подъема будет больше 1. Если очередной подъем совершится на
высоту, не большую 1, то его считать не будем (катушка остановилась).
Читаем входные
данные.
scanf("%lf %lf",&l,&k);
Количество
подъемов катушки подсчитываем в переменной res.
res = 0;
Пусть катушка
находится на высоте l. Тогда после опускания она поднимется вверх, если только
высота ее подъема будет больше 1 (иначе считаем, что катушка остановилась). Это
возможно при выполнении неравенства l / k > 1.
while(l / k > 1.0)
{
l /= k;
res++;
}
Выводим ответ.
printf("%d\n",res);
import java.util.*;
public class Main
{
public static void
main(String[] args)
{
Scanner con = new
Scanner(System.in);
double l = con.nextDouble();
double k = con.nextDouble();
int res = 0;
while(l / k >
1.0)
{
l /= k;
res++;
}
System.out.println(res);
con.close();
}
}
Python реализация
Читаем входные
данные.
l, k = map(float,input().split())
Количество
подъемов катушки подсчитываем в переменной res.
res = 0
Пусть катушка
находится на высоте l. Тогда после опускания она поднимется вверх, если только
высота ее подъема будет больше 1 (иначе считаем, что катушка остановилась). Это
возможно при выполнении неравенства l / k > 1.
while l / k > 1:
l /= k
res += 1
Выводим ответ.
print(res)