定义为:每个数字的十进制表示中(0~9),每个数位各不相同且各个数位之和等于N。
满足条件的数字可能很多,找到其中的最小值即可。
多多君还有很多研究课题,于是多多君找到了你--未来的计算机科学家寻求帮助。
数据范围:
进阶:空间复杂度 ,时间复杂度
进阶:空间复杂度 ,时间复杂度
共一行,一个正整数N,如题意所示,表示组合中数字不同数位之和。
(1 <= N <= 1,000)
共一行,一个整数,表示该组合中的最小值。
如果组合中没有任何符合条件的数字,那么输出-1即可。
5
5
符合条件的数字有:5,14,23,32,41其中最小值为5
12
39
50
-1
没有符合条件的数字 (T▽T)
//处理输入,保存到数组inputArr中 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); const inputArr = []; rl.on('line', function(line){ inputArr.push(parseInt(line));//将输入流转换为数字类型保存到inputArr中 }).on('close', function(){ console.log(findMinNum(inputArr[0]));//调用解决函数并输出 }) //解决函数 function findMinNum(n) { if (n < 0 || n > 45) { return - 1; } else if(n < 10){ return n; } else if(n <= 17){ return (n - 9) * 10 + 9; } else if(n <= 24){ return (n - 17) * 100 + 89; } else if(n <= 30){ return (n - 24) * 1000 + 789; } else if(n <= 35){ return (n - 30) * 10000 + 6789; } else if(n <= 39){ return (n - 35) * 100000 + 56789; } else if(n <= 42){ return (n - 39) * 1000000 + 456789; } else if(n <= 44){ return (n - 42) * 10000000 + 3456789; } else if(n == 45){ return 123456789; } }