首页 > 试题广场 >

多多的数字组合

[编程题]多多的数字组合
  • 热度指数:8627 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
多多君最近在研究某种数字组合:
定义为:每个数字的十进制表示中(0~9),每个数位各不相同且各个数位之和等于N。
满足条件的数字可能很多,找到其中的最小值即可。
多多君还有很多研究课题,于是多多君找到了你--未来的计算机科学家寻求帮助。

数据范围:
进阶:空间复杂度 ,时间复杂度

输入描述:
共一行,一个正整数N,如题意所示,表示组合中数字不同数位之和。
(1 <= N <= 1,000)


输出描述:
共一行,一个整数,表示该组合中的最小值。
如果组合中没有任何符合条件的数字,那么输出-1即可。
示例1

输入

5

输出

5

说明

符合条件的数字有:5,14,23,32,41
其中最小值为5
示例2

输入

12

输出

39

说明


示例3

输入

50

输出

-1

说明

没有符合条件的数字 (T▽T) 
头像 神再佑我子美
发表于 2022-01-15 23:00:34
多多的数字组合题解 分析: 1,2,3,4,5,6,7,8,9最多和为45,所以大于45输出-1,小于10直接输出,10到45一定有答案。 右边的数越大,结果越小。因为不同位数的话,位数越多,结果越大(1234>19)。同等位数,大的数要先选来确保最后选的数足够小(678>489)。 展开全文
头像 醉亦醒时醒亦醉
发表于 2024-03-13 18:30:28
这个题目难度不大,因为每一位都要求不一样,所以最多就是0——9组成的数字,也就是如果n > 45的话,也就无解了。如果不大于45,因为要找到最小的,所以就让最后一位从9开始,如果小于9就从8开始,依次类推,即可得出答案。 这里的空间复杂度是O(1)。时间复杂度就分两个情况,如果n > 4 展开全文
头像 君莫笑swl
发表于 2021-09-29 16:02:45
多多的数字组合 #include<stdio.h> int pow(int num, int n){ int temp = num; if(n == 0){ return 1; } for(int i=1;i<n;i++){ 展开全文
头像 牛客487943642号
发表于 2021-07-26 13:59:29
题目描述 每个数字的十进制表示中(0~9),每个数位各不相同且各个数位之和等于N。满足条件的数字可能很多,找到其中的最小值即可。 题目分析 输入数字N,返回的数字满足:各个数位的数字之和等于N,找出最小数字。由于数字由0~9组成,且各个数位不相同,因此数字最短为1位,最长为10位,各个数位之和的范围 展开全文