n个一位数能够组成的最小整数

题目描述

请问n个一位数能够组成的最小的n位整数是多少。
比如,n=3,3个整数为3、1、9,那么组成的最小整数是139。
比如,n=4,4个整数为2、8、0、6,那么组成的最小整数是2068。

输入格式

第一行为一个整数n(n<10)
第二行为n个一位数

输出格式

一行,包含一个组成的最小整数。

输入样例 

4
7 3 4 4

输出样例 

3447
#include<iostream>
#include "algorithm"
using namespace std;

int main(){	
	int n , i , j;
	while (cin >> n)
	{
		int a[10];//定义一个长度为10的数组
		for (int i = 0; i < n;i++)
		{
			cin >> a[i];//输入n个一位数
		}
		sort(a,a+n);//对a数组进行排序
		int f = 0;//判断是否存在有效位数
		int count0=0;//存储不存在有效位数时前面的无效位数(即0)有几位
		for (i = 0; i < n; i++)
		{
			if (f)
				cout << a[i];//若已经存在有效位数,不管后续是什么数字都直接输出即可
			else if (!f && a[i] != 0)//若不存在有效位数并且当前位数的数字非零
			{
				cout << a[i];//输出当前位数字
				for (j = 0; j < count0; j++)//把前面未输出的0全部输出在有效数字之后
				{
					cout << 0;
				}
				f = 1;//已经存在有效数字,故f=1
			}
			else if (!f && a[i] == 0) 
				count0++;//若不存在有效位数并且当前位数的数字为零,将这个0存储起来
		}
		cout << endl;
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值