定义为:每个数字的十进制表示中(0~9),每个数位各不相同且各个数位之和等于N。
满足条件的数字可能很多,找到其中的最小值即可。
多多君还有很多研究课题,于是多多君找到了你--未来的计算机科学家寻求帮助。
数据范围:
进阶:空间复杂度 ,时间复杂度
进阶:空间复杂度 ,时间复杂度
共一行,一个正整数N,如题意所示,表示组合中数字不同数位之和。
(1 <= N <= 1,000)
共一行,一个整数,表示该组合中的最小值。
如果组合中没有任何符合条件的数字,那么输出-1即可。
5
5
符合条件的数字有:5,14,23,32,41其中最小值为5
12
39
50
-1
没有符合条件的数字 (T▽T)
#暴力法 n=int(input()) if n>45: print(-1) elif n<=9: print(n) elif 9<n<=17: print(str(n-9)+str(9)) elif 17<n<=24: print(str(n-17)+str(89)) elif 24<n<=30: print(str(n-24)+str(789)) elif 30<n<=35: print(str(n-30)+str(6789)) elif 35<n<=39: print(str(n-35)+str(56789)) elif 39<n<=42: print(str(n-39)+str(456789)) elif 42<n<=44: print(str(n-42)+str(3456789)) else: print(123456789)
num = int(input()) res = 0 count = 0 for i in range(1,10)[::-1]: if i <= num and num > 0: num = num - i res = res + i * (10 ** count) count += 1 print(res) if num == 0 else print(-1)
list=[1,2,3,4,5,6,7,8,9] N=int (input('')) M=N if N<=45: if N<10: print(N) else: number=9 count=0 while(N>number): N=N-number number=number-1 count=count+1 one=M-sum(list[-count:]) list2=[str(i) for i in list[-count:]] s=''.join(list2) if one==0: print(s) else: Z=str(one)+s print(Z) else: print(-1)有点投机取巧的意思。