Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Для начала, нам необходимо понять, чему равно минимальное количество круглых чисел, необходимое для того, чтобы представить 𝑛
- . Оно равно количеству ненулевых цифр в 𝑛
- . Почему? Потому что мы можем «удалить» ровно одну ненулевую цифру в 𝑛
- при помощи ровно одного круглого числа (таким образом, нам необходимо использовать не более этого количества круглых чисел), а с другой стороны сумма двух круглых чисел имеет не более двух ненулевых цифр (сумма трех круглых чисел имеет не более трех ненулевых цифр и так далее), так что бесполезно пытаться удалять более одной цифры при помощи суммы нескольких круглых чисел.
- Таким образом, нам необходимо найти все цифры 𝑛
- и вывести соответствующее число для каждой из этих цифр. Например, если 𝑛=103
- , то 𝑛=1⋅102+0⋅101+3⋅100
- , таким образом, нам необходимо два круглых числа: 1⋅102
- и 3⋅100
- .
- Так как последняя цифра 𝑛
- равна 𝑛%10
- (остаток при целочисленном делении 𝑛
- на 10
- ) и мы можем удалить последнюю цифру числа при помощи целочисленного деления на 10
- , мы можем использовать следующий код для решения задачи:
- int n;
- cin >> n;
- vector<int> ans;
- int power = 1;
- while (n > 0) {
- if (n % 10 > 0) {
- ans.push_back((n % 10) * power);
- }
- n /= 10;
- power *= 10;
- }
- cout << ans.size() << endl;
- for (auto number : ans) cout << number << " ";
- cout << endl;
Advertisement
Add Comment
Please, Sign In to add comment