nq1s788

Сумма круглых чисел

Nov 3rd, 2025
769
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.13 KB | None | 0 0
  1. Для начала, нам необходимо понять, чему равно минимальное количество круглых чисел, необходимое для того, чтобы представить 𝑛
  2. . Оно равно количеству ненулевых цифр в 𝑛
  3. . Почему? Потому что мы можем «удалить» ровно одну ненулевую цифру в 𝑛
  4.  при помощи ровно одного круглого числа (таким образом, нам необходимо использовать не более этого количества круглых чисел), а с другой стороны сумма двух круглых чисел имеет не более двух ненулевых цифр (сумма трех круглых чисел имеет не более трех ненулевых цифр и так далее), так что бесполезно пытаться удалять более одной цифры при помощи суммы нескольких круглых чисел.
  5.  
  6. Таким образом, нам необходимо найти все цифры 𝑛
  7.  и вывести соответствующее число для каждой из этих цифр. Например, если 𝑛=103
  8. , то 𝑛=1⋅102+0⋅101+3⋅100
  9. , таким образом, нам необходимо два круглых числа: 1⋅102
  10.  и 3⋅100
  11. .
  12.  
  13. Так как последняя цифра 𝑛
  14.  равна 𝑛%10
  15.  (остаток при целочисленном делении 𝑛
  16.  на 10
  17. ) и мы можем удалить последнюю цифру числа при помощи целочисленного деления на 10
  18. , мы можем использовать следующий код для решения задачи:
  19.  
  20. int n;
  21. cin >> n;
  22. vector<int> ans;
  23. int power = 1;
  24. while (n > 0) {
  25.     if (n % 10 > 0) {
  26.         ans.push_back((n % 10) * power);
  27.     }
  28.     n /= 10;
  29.     power *= 10;
  30. }
  31. cout << ans.size() << endl;
  32. for (auto number : ans) cout << number << " ";
  33. cout << endl;
  34.  
Advertisement
Add Comment
Please, Sign In to add comment