URAL 1727. Znaika's Magic Numbers(数学 vector)
2015-03-15 09:04
369 查看
题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1727
Time limit: 0.5 second
Memory limit: 64 MB
Znaika has many interests. For example, now he is investigating the properties of number sets. Znaika writes down some set consisting of different positive integers (he calls this set agenerating set),
calculates the sum of all the written digits, and writes down the result in a special notebook. For example, for a generating set 7, 12, 43, he will write down the number17 = 7 + 1 + 2 + 4 + 3. Znaika is sure that only magic numbers can
appear as a result of this operation.
Neznaika laughs at Znaika. He thinks that there is a generating set for every number, and he even made a bet with Znaika that he would be able to construct such a set.
Help Neznaika win the bet and construct a generating set for a given number.
The elements of the set must be different positive integers strictly less than 105. If there are several generating sets, output any of them. If there are no generating sets, output −1.
代码如下:
1727. Znaika's Magic Numbers
Time limit: 0.5 secondMemory limit: 64 MB
Znaika has many interests. For example, now he is investigating the properties of number sets. Znaika writes down some set consisting of different positive integers (he calls this set agenerating set),
calculates the sum of all the written digits, and writes down the result in a special notebook. For example, for a generating set 7, 12, 43, he will write down the number17 = 7 + 1 + 2 + 4 + 3. Znaika is sure that only magic numbers can
appear as a result of this operation.
Neznaika laughs at Znaika. He thinks that there is a generating set for every number, and he even made a bet with Znaika that he would be able to construct such a set.
Help Neznaika win the bet and construct a generating set for a given number.
Input
The only input line contains an integer n (0 < n < 105).Output
If it is possible to construct a generating set for the number n, output the number of elements in this set in the first line. In the second line output a space-separated list of these elements.The elements of the set must be different positive integers strictly less than 105. If there are several generating sets, output any of them. If there are no generating sets, output −1.
Sample
input | output |
---|---|
17 | 3 7 12 43 |
#include <cstdio> #include <cstring> #include <vector> #include <algorithm> using namespace std; const int maxn = 100017; vector<int> vv[maxn]; int vis[maxn], ans[maxn]; void init() { for(int i = 1; i < maxn; i++) { int tt = i; int sum = 0; while(tt) { sum+=tt%10; tt/=10; } vv[sum].push_back(i); } } int main() { int n; init(); while(~scanf("%d",&n)) { memset(vis, 0, sizeof(vis)); int k = 0; for(int i = 45; i > 0; i--) { if(n >= i) { for(int j = 0; j < vv[i].size(); j++) { if(n < i) break; if(vis[vv[i][j]] == 0) { vis[vv[i][j]] = 1; ans[k++] = vv[i][j]; n-=i; } } } if(n <= 0) break; } if(k==0 || n != 0) { printf("-1\n"); continue; } printf("%d\n%d",k,ans[0]); for(int i = 1; i < k; i++) { printf(" %d",ans[i]); } printf("\n"); } return 0; }
相关文章推荐
- URAL 1727. Znaika's Magic Numbers(数学 vector)
- URAL 1051 跳跳棋(孔明棋)(加强版) 数学找规律(较弱哦)
- ural 2029 Towers of Hanoi Strike Back (数学找规律)
- Ural1225(数学)
- URAL 1117. Hierarchy 数学 找规律 二叉树
- URAL 1502. Domino Dots(数学)
- URAL - 2070 Interesting Numbers 素数打表+数学定理
- URAL 1725. Sold Out!(数学啊 )
- 数学分析 + 容斥原理 - URAL 1907 Coffee and Buns
- 【数学题】【网络流】风扇 blower ural1765
- URAL 1515. Cashmaster (数学啊 )
- URAL 1068. Sum (小学数学题)
- URAL 1731. Dill(数学啊 )
- URAL 1510. Order(map 数学啊)
- URAL 1725. Sold Out!(数学啊 )
- ural 2067 Friends and Berries 数学推理
- URAL 2067-数学
- URAL 2070. Interesting Numbers(素数打表 数学题)
- [类欧几里得算法 数学技巧] 51Nod 1132 覆盖数字的数量 V2 & Ural 1797 Summit Online Judge. Version 2
- URAL 1491. Unreal Story(区间染色, 数学啊)