CF1352A - Sum of Round Numbers
A. Sum of Round Numbers
A positive (strictly greater than zero) integer is called round if it is of the form d00...0. In other words, a positive integer is round if all its digits except the leftmost (most significant) are equal to zero. In particular, all numbers from \(1\) to \(9\) (inclusive) are round.
For example, the following numbers are round: \(4000\), \(1\), \(9\), \(800\), \(90\). The following numbers are not round: \(110\), \(707\), \(222\), \(1001\).
You are given a positive integer \(n\) (\(1≤n≤104\)). Represent the number \(n\) as a sum of round numbers using the minimum number of summands (addends). In other words, you need to represent the given number \(n\) as a sum of the least number of terms, each of which is a round number.
Input
The first line contains an integer \(t\) (\(1≤t≤10^4\)) — the number of test cases in the input. Then \(t\) test cases follow.
Each test case is a line containing an integer \(n\) (\(1≤n≤10^4\)).
Output
Print \(t\) answers to the test cases. Each answer must begin with an integer \(k\) — the minimum number of summands. Next, \(k\) terms must follow, each of which is a round number, and their sum is \(n\). The terms can be printed in any order. If there are several answers, print any of them.
Example
Input
5
5009
7
9876
10000
10
Output
2
5000 9
1
7
4
800 70 6 9000
1
10000
1
10
题面翻译
我们定义一个 round 的正整型,它长成这样:d00...0。换句话说,如果一个正整型是 round 的,那它除了最高位以外所有的数位都是 \(0\)。我们特别规定从 \(1\) 到 \(9\) (包含 \(9\))都满足 round。
举个例子,这些数是 round 的:\(4000\), \(1\), \(9\), \(800\), \(90\),而这些不 round: \(110\), \(707\), \(222\), \(1001\)。
给你一个正整数 \(n\) (\(1≤n≤104\)),把它用最少数量的 round 数之和表示出来。
输入
第一行是一个整型 \(t\) (\(1≤t≤10^4\)),代表测试点个数。接下来有 \(t\) 个测试点。
每个测试点包含一个整型 \(n\) (\(1≤n≤10^4\)).
输出
对每个测试点输出一个答案,每个答案必须以一个整型 \(k\) 开头,它代表加数的数量。然后输出一行 \(k\) 个加数,用空格分开。你可以以任意顺序输出你的加数。如果有很多种答案,任意输出一个。
样例
输入
5
5009
7
9876
10000
10
输出
2
5000 9
1
7
4
800 70 6 9000
1
10000
1
10
题解
从样例不难看出,可以把 \(n\) 的每一位拆成 round 数然后直接加起来。
个人 AC 代码
#include <bits/stdc++.h>
using namespace std;
int t, n;
int main()
{
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> t;
while(t--)
{
cin >> n;
int suf = 1;
vector<int> ans;
while(n)
{
int tmp = n%10*suf;
if(tmp) ans.push_back(tmp);
suf *= 10;
n /= 10;
}
cout << ans.size() << '\n';
for(int i = 0; i < ans.size(); i++) cout << ans[i] << " \n"[i==ans.size()-1];
}
return 0;
}
标签:10,测试点,Sum,number,round,CF1352A,整型,integer,Round
From: https://www.cnblogs.com/CasseShimada/p/16704003.html