【入门】n个一位数能够组成的最小数

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

输入描述

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

输出描述

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

用例输入 1 

4
7 3 4 4

用例输出 1 

3447

#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
//自定义函数:在sort 关键字时,使得从小到大排列
bool jude(int a,int b)
{
    return a<b;
}
int main()
{
    //a为输入个数,b保存哈希表的值,c为判断含0个数;
    int a,b,c=2,d,answer;
    cin>>a;
    vector<int>v1(a);
    for(int i=0;i<a;i++)
    {
        cin>>b;
        v1[i]=b;
    }
    //对哈希表进行初步排序,默认从大到小
    //当a<b为真,排序
    sort(v1.begin(),v1.end(),jude);
    //找到非0元素
    for(int i=0;i<v1.size();i++)
    {
        
        if(v1[i]==0)
        {
            c++;
        }
        else{
            answer=v1[i]*pow(10,a-1);
            d=i;
            break;
                
        }
    }
   // cout<<answer;
    //加上余下的值
    for(int j=d+1;j<v1.size();j++)
    {
        answer=answer+v1[j]*pow(10,(v1.size()-c));
        c++;
    }
    cout<<answer<<endl;
  
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值