egogoboy

Школа 1

Oct 26th, 2022 (edited)
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.01 KB | None | 0 0
  1. /*Лука в кинотеатре
  2. Ограничение по времени: 1 секунда
  3.  
  4. Воскресным утром в кинотеатре в двух залах одновременно начался показ фильмов. Фильм, показываемый в первом зале, имеет длительность a минут, а фильм, показываемый во втором зале — b минут. В каждом из залов после окончания фильма его сразу начинают показывать с начала. Любой посетитель может войти в любой из залов.
  5. Лука знает, что с момента начала показа фильмов прошло t минут. Ему неважно, какой фильм посмотреть, так как Лука просто хочет весело провести время. Однако мальчик нетерпелив, поэтому хочет узнать, через какое минимальное время хотя бы в одном из залов начнут показывать фильм с начала.
  6.  
  7. Формат входных данных
  8. Первая строка содержит одно целое число a (1≤a≤2⋅109) — длительность первого фильма в минутах.
  9. Вторая строка содержит одно целое число b (1≤b≤2⋅109) — длительность второго фильма в минутах.
  10. Третья строка содержит одно целое число t (0≤t≤2⋅1018) — время в минутах, прошедшее с начала показа фильмов.
  11. Обратите внимание, что входные данные и ответ могут быть достаточно большими, поэтому следует использовать 64-битный тип данных, например long long в C/C++, long в Java, int64 в Pascal.
  12.  
  13. Формат выходных данных
  14. Выведите одно целое число — минимальное время в минутах, через которое хотя бы в одном зале начнут показывать фильм с начала.
  15.  
  16. Система оценки
  17. Решения, правильно работающие только для случаев, когда t не превосходит 2⋅109, будут оцениваться в 60 баллов.
  18.  
  19. Пояснение
  20. Рассмотрим первый пример из условия. Фильм, показываемый в первом зале, имеет длительность 3 минуты, а фильм, показываемый во втором зале — 7 минут. Таким образом, первый фильм начинается спустя 0,3,6,9,12,... минут после начала показа, а второй фильм — спустя 0,7,14,21,28,... минут после начала показа. Лука знает, что с начала показа фильмов прошло 10 минут. Для того, чтобы попасть на начало первого фильма, ему придётся подождать 12−10=2 минуты, а чтобы попасть на начало второго фильма — 14−10=4 минуты.
  21. Рассмотрим второй пример из условия. Оба фильма имеют длительность 5 минут и начинаются спустя 0,5,10,15,... минут после начала показа. Так как с момента начала показа прошло 10 минут, Луке не придётся ждать.
  22. Рассмотрим третий пример из условия. Оба фильма начнутся спустя 9 минут после начала показа, поэтому вне зависимости от выбора фильма Луке придётся подождать 9−8=1 минуту.
  23.  
  24.  */
  25.  
  26.  
  27.  
  28.  
  29. #include<iostream>
  30. #include<fstream>
  31. #define fors(count, st, fn) for (int count = st; count < fn; ++count)
  32. #define forb(count, st, fn) for (int count = st; count >= fn; --count)
  33. #define all(container) container.begin(), container.end()
  34. #define vec(type) std:vector<int>
  35. #define dvec(type) std::vector<std::vector<int>>
  36.  
  37. #include<iostream>
  38. #include<fstream>
  39. #define fors(count, st, fn) for (int count = st; count < fn; ++count)
  40. #define forb(count, st, fn) for (int count = st; count >= fn; --count)
  41. #define all(container) container.begin(), container.end()
  42. #define vec(type) std:vector<int>
  43. #define dvec(type) std::vector<std::vector<int>>
  44.  
  45. int main() {
  46.  
  47.     std::fstream fin("input.txt");
  48.     long long a, b, t;
  49.     fin >> a >> b >> t;
  50.     long long tempa = t / a + (t % a != 0 ? 1 : 0), tempb = t / b + (t % b != 0 ? 1 : 0);
  51.     a *= tempa; b *= tempb;
  52.     a -= t; b -= t;
  53.     std::cout << std::min(a, b) << std::endl;
  54.  
  55.     return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment