egogoboy

высшая проба отбор №1

Nov 15th, 2022 (edited)
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.05 KB | None | 0 0
  1. /*Сдать решение задачи A-Нарезка сосисок
  2. Полный балл:  100
  3. Бонусные баллы:   
  4. Имя входного файла: in.txt или стандартный поток ввода
  5. Имя выходного файла:   out.txt или стандартный поток вывода
  6. Ограничение времени:  1 с
  7. Ограничение памяти:    256M
  8. Нарезка сосисок
  9. На олимпиаду приехало m участников. Организаторы приготовили n сосисок на обед и их необходимо нарезать на кусочки так, чтобы суммарная длина кусочков, которые достанутся каждому участнику, была максимальна и одинакова. Одним разрезом можно разрезать только одну сосиску.
  10.  
  11. Определите минимальное суммарное количество разрезов, которые необходимо сделать.
  12.  
  13. Формат входных данных
  14. В единственной строке входных данных вводятся два числа n, m (1 ≤ n, m ≤ 100).
  15.  
  16. Формат результата
  17. Выведите минимальное суммарное количество разрезов.
  18.  
  19. Примеры
  20. Входные данные
  21. 3 4
  22. Результат работы
  23. 3
  24. Входные данные
  25. 4 8
  26. Результат работы
  27. 4
  28. Входные данные
  29. 8 2
  30. Результат работы
  31. 0
  32.  
  33. Примечания
  34. В первом примере нужно можно отрезать от каждой сосиски 3/4 её длины и дать эти кусочки первым трём участникам. Оставшийся участник получит 3 четвертинки сосиски.
  35.  
  36. Во втором примере достаточно разрезать каждую сосиску пополам и каждый участник получит по половине сосиски.
  37.  
  38. В третьем примере разрезы не нужны, участники получат по четыре сосиски.*/
  39.  
  40.  
  41. #include<iostream>
  42. #include<fstream>
  43. #include<vector>
  44. #include<stdint.h>
  45. #define all(container) container.begin(), container.end()
  46. #define fors(counter, start, finish) for (int counter = start; counter < finish; ++counter)
  47. #define forb(counter, start, finish) for (int counter = start; counter >= finish; --counter)
  48. #define vec(type) std::vector<type>
  49. #define dvec(type) std::vector<std::vector<type>>
  50. //#define fin std::cin
  51.  
  52. int main() {
  53.     std::ifstream fin("in.txt");
  54.     int n, m;
  55.     fin >> n >> m;
  56.     if (n % m == 0) {
  57.         std::cout << 0;
  58.     }
  59.     else {
  60.         n -= n / m * m;
  61.         double x = n, y = m;
  62.         double temp = x / y, res = 0;
  63.         int ans = 0, k;
  64.         while (res < n) {
  65.             res += temp;
  66.             int k = res;
  67.             if (k != res)
  68.                 ans++;
  69.         }
  70.         std::cout << (res > n ? ans - 2 : ans);
  71.     }
  72.     return 0;
  73. }
Tags: olimp
Advertisement
Add Comment
Please, Sign In to add comment