输出最小的数位和等于x并且各个数位都不一样的值

简介: 输出最小的数位和等于x并且各个数位都不一样的值
#include<iostream>
#include<cstring>
#include<map>
#include<stack>
#include<queue>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<string.h>
using namespace std;
typedef long long ll;
const int maxn=2e4+10;
const int inf=99999999;
int a[maxn];
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        cin>>n;
        if(n<=9)
        {
            cout<<n<<endl;continue;
        }
        if(n>45)
        {
            cout<<"-1"<<endl;continue;
        }
        int sum=0;
        int num[111];
        int tot=0,ok=0;
        int all=n;
        for(int i=9;i>=1;i--)
        {
            if(sum+i>n)
                continue;
            sum+=i;
            num[tot++]=i;
            if(sum==n)
            {
                ok=1;break;
            }
        }
        if(ok)
        {
            for(int i=tot-1;i>=0;i--)
                cout<<num[i];
            cout<<endl;
        }
        else
            cout<<"-1"<<endl;
    }
}
目录
相关文章
|
7月前
|
Python
如果一个n位正整数等于其各位数字的n次方之和
如果一个n位正整数等于其各位数字的n次方之和
|
算法 测试技术 C#
C++数位算法:数字1的个数
C++数位算法:数字1的个数
|
7月前
|
Python
如何判断一个数是质数? 要求:编写一个Python函数,输入一个整数,输出该整数是否为质数。质数是指大于1的自然数中,除了1和它本身以外不再有其他因数的数。
如何判断一个数是质数? 要求:编写一个Python函数,输入一个整数,输出该整数是否为质数。质数是指大于1的自然数中,除了1和它本身以外不再有其他因数的数。
380 1
|
4月前
|
C语言
用栈实现将一个十进制数值转换成八进制数值。即用该十进制数值除以8,并保留其余数;重复此操作,直到该十进制数值为0为止。最后将所有的余数反向输出就是所对应的八进制数值
这篇文章展示了如何使用栈(包括顺序栈和链栈)实现将十进制数值转换成八进制数值的方法,通过C语言编程演示了两种栈的实现方式和使用场景。
用栈实现将一个十进制数值转换成八进制数值。即用该十进制数值除以8,并保留其余数;重复此操作,直到该十进制数值为0为止。最后将所有的余数反向输出就是所对应的八进制数值
旋转数组的最小数字
旋转数组的最小数字
49 0
|
算法
求二进制位中一的个数
求二进制位中一的个数
85 0
11.旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
90 0
11.旋转数组的最小数字
|
Java
位移运算---为何负数不断地无符号向右移动的最小值是1呢?
位移运算---为何负数不断地无符号向右移动的最小值是1呢?
241 0
位移运算---为何负数不断地无符号向右移动的最小值是1呢?
|
前端开发 测试技术 程序员
寻找旋转数组中的最小数字
寻找旋转数组中的最小数字
寻找旋转数组中的最小数字