egogoboy

Школа 3

Oct 26th, 2022
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.69 KB | None | 0 0
  1. /*Лука наблюдает за кузнечиками
  2. Ограничение по времени: 1 секунда
  3.  
  4. Любимое занятие Луки — наблюдать за кузнечиками. Сегодня утром, прогуливаясь по парку, он обнаружил кузнечика, который прыгал по окружности длиной n метров. Лука заметил, что за один прыжок кузнечик может переместиться по часовой стрелке на k или k+1 метров от своей текущей позиции на окружности. Мальчику стало интересно, какое минимальное количество прыжков потребуется кузнечику, чтобы, начав прыгать из некоторой точки окружности, снова оказаться в ней.
  5.  
  6. Формат входных данных
  7. Первая строка содержит одно целое число n (1≤n≤106) — длина окружности в метрах.
  8. Вторая строка содержит одно целое число k (1≤k≤109) — характеристика длины прыжка кузнечика в метрах.
  9. Гарантируется, что 1≤n⋅k≤109.
  10.  
  11. Формат выходных данных
  12. Выведите одно целое число — минимальное количество прыжков, которое придётся сделать кузнечику, чтобы, начав прыгать из некоторой точки окружности, снова оказаться в ней.
  13.  
  14. Система оценки
  15. Решения, правильно работающие только для случаев, когда n не превосходит 100, будут оцениваться в 60 баллов.
  16.  
  17. Пояснение
  18. Рассмотрим первый пример из условия. Один из вариантов действий кузнечика таков:
  19.  
  20. Выполнить прыжок длины 3,
  21. Выполнить прыжок длины 4,
  22. Выполнить прыжок длины 3.
  23. Таким образом, суммарно кузнечик преодолеет 3+4+3=10 метров, то есть вернётся в исходную точку.
  24. Во втором примере из условия кузнечику достаточно выполнить пять прыжков длины 2.
  25. В третьем примере из условия можно выполнить один прыжок длины 8 и два прыжка длины 7. Таким образом, суммарно кузнечик преодолеет 8+7+7=22 метра, то есть обойдёт окружность дважды и вернётся в исходную точку.*/
  26.  
  27.  
  28.  
  29. #include<iostream>
  30. #include<fstream>
  31. #include<vector>
  32. #define fors(count, st, fn) for (int count = st; count < fn; ++count)
  33. #define forb(count, st, fn) for (int count = st; count >= fn; --count)
  34. #define all(container) container.begin(), container.end()
  35. #define vec(type) std::vector<int>
  36. #define dvec(type) std::vector<std::vector<int>>
  37.  
  38. int n, k;
  39. int ans = 1000000000;
  40.  
  41. void jump(int ost, int count) {
  42.     if (count >= ans) {
  43.         return;
  44.     }
  45.     if (ost < 0) {
  46.         ost = n + ost;
  47.     }
  48.     if (ost == 0) {
  49.         ans = count;
  50.         return;
  51.     }
  52.     else {
  53.         jump(ost - k, count + 1);
  54.         jump(ost - k - 1, count + 1);
  55.     }
  56. }
  57.  
  58. int main() {
  59.  
  60.     std::fstream fin("input.txt");
  61.     fin >> n >> k;
  62.     int tempc = n / k, tempo = n % k;
  63.  
  64.     jump(n, 0);
  65.  
  66.     std::cout << ans << std::endl;
  67.     return 0;
  68. }
  69.  
  70.  
Add Comment
Please, Sign In to add comment