1023. 组个最小数 (20)
2015-11-28 20:58
288 查看
1023. 组个最小数 (20)
给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。
现给定数字,请编写程序输出能够组成的最小的数。
输入格式:
每个输入包含1个测试用例。每个测试用例在一行中给出10个非负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间用一个空格分隔。10个数字的总个数不超过50,且至少拥有1个非0的数字。
输出格式:
在一行中输出能够组成的最小的数。
输入样例:
2 2 0 0 0 3 0 0 1 0
输出样例:
10015558
给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。
现给定数字,请编写程序输出能够组成的最小的数。
输入格式:
每个输入包含1个测试用例。每个测试用例在一行中给出10个非负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间用一个空格分隔。10个数字的总个数不超过50,且至少拥有1个非0的数字。
输出格式:
在一行中输出能够组成的最小的数。
输入样例:
2 2 0 0 0 3 0 0 1 0
输出样例:
10015558
#include<iostream> #include<fstream> #include<string> using namespace std; int main() { fstream file("data.txt"); int num[10]; string result=""; for(int i=0;i<10;i++) { file>>num[i]; } for(int i=1;i<10;i++) { if(num[i]!=0) { num[i]--; result+=i+'0'; break; } } for(int i=0;i<10;i++) { for(int j=0;j<num[i];j++) { result+=i+'0'; } } cout<<result<<endl; return 0; }
相关文章推荐
- Comparable接口与Comparator
- 树莓派无线网卡选择
- qt iOS app 如何获取共享文件夹文件,如何使用document文档目录文件
- C++为什么要引入异常处理机制
- 初学实体框架EF(Entity Framework)
- C++为什么要引入异常处理机制
- Android 系统性能优化
- 清理Android中无用的drawable资源和values资源
- 伸展树splay tree
- Generate Parentheses
- 大话设计模式之面向对象基础篇(二)
- WiFi P2P抓包分析(二) P2P组网
- C#程序从Excel表格中读取数据并进行处理
- [总结]视音频编解码技术零基础学习方法
- 针对xss漏洞的一些方法
- 集合框架Map笔记持续
- thinkphp 3.2 实现登录功能+验证码
- 我在mac os上安装gopherjs的过程
- OC总结
- Java注释