PAT 1023 组个最小数
2015-12-08 20:24
323 查看
给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。
现给定数字,请编写程序输出能够组成的最小的数。
输入格式:
每个输入包含1个测试用例。每个测试用例在一行中给出10个非负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间用一个空格分隔。10个数字的总个数不超过50,且至少拥有1个非0的数字。
输出格式:
在一行中输出能够组成的最小的数。
输入样例:
输出样例:
代码实现:
#include <iostream>
#include <cstring>
#include <map>
#include <vector>
using namespace std;
int main()
{
int i = 0, j = 0, num = 0;
int cnts = 0 , flag = 0;
for(i = 0; i < 10; i++)
{
cin >> num;
if (i == 0 && num != 0) //如果有0,就保存下来
{
flag = num;
}
else if (num != 0)
{
cnts++;
cout << i;
/* 判断是否有0 */
if (flag != 0)
{
for(j = 0; j < flag; j++)
{
cout << 0;
}
flag = 0;
}
for(j = 1; j < num; j++)
{
cout << i;
}
}
}
if (cnts == 0)
{
cout << 0;
}
cout << endl;
return 0;
}
现给定数字,请编写程序输出能够组成的最小的数。
输入格式:
每个输入包含1个测试用例。每个测试用例在一行中给出10个非负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间用一个空格分隔。10个数字的总个数不超过50,且至少拥有1个非0的数字。
输出格式:
在一行中输出能够组成的最小的数。
输入样例:
2 2 0 0 0 3 0 0 1 0
输出样例:
10015558
代码实现:
#include <iostream>
#include <cstring>
#include <map>
#include <vector>
using namespace std;
int main()
{
int i = 0, j = 0, num = 0;
int cnts = 0 , flag = 0;
for(i = 0; i < 10; i++)
{
cin >> num;
if (i == 0 && num != 0) //如果有0,就保存下来
{
flag = num;
}
else if (num != 0)
{
cnts++;
cout << i;
/* 判断是否有0 */
if (flag != 0)
{
for(j = 0; j < flag; j++)
{
cout << 0;
}
flag = 0;
}
for(j = 1; j < num; j++)
{
cout << i;
}
}
}
if (cnts == 0)
{
cout << 0;
}
cout << endl;
return 0;
}
相关文章推荐
- 扫雷2
- js中的open()函数相关的全部知识点
- android wifi 无缝切换
- lintcode 1: Data Stream Median
- 千兆以太网规范
- 面向对象-----代码练习(以水杯为例)
- 北大OJ1002
- 扫雷2
- Android如何反编译APK与资源文件
- 地理编码与反地理编码
- Windows程序设计--创建第一个窗口
- Java实现从数据库导出大量数据记录并保存到文件的方法(转)
- Sqlite3
- 北大OJ1001
- c++侵入式对象计数设计技术
- Codeforces Round #302 (Div. 2) A. Set of Strings
- Multi-Exemplar Affinity Propagation
- 使用Decision Tree对MNIST数据集进行实验
- JavaScript 系列笔记(一)数据类型
- servlet容器的URL映射知识