class Solution: dig = [9, 8, 7, 6, 5, 4, 3, 2] n = 11 res = 0 out = [] su = False def f1(self, n): # global mul,su for i in self.dig: if n % i == 0: self.out.append(i) self.f1(n / i) return self.out if n > 9: self.su = True def solution(self, n): if n < 10: print(10 + n) else: outt = self.f1(n) if self.su: self.res = -1 else: for j in range(len(outt)): self.res =self.res+ 10 ** j * outt[j] return self.res
关键思想就是要从大到小遍历,因为要保证输出的位数越少越好,所以用越大的因子会用越少的位数除完,而相同的位数内,高位的数字越大,低位的就越小,倒序输出时的数就越小。 class Solution: def solution(self , n ): # write code here def search(n,temp): for i in range(9,1,-1): res = n/i if n%i==0: temp = temp*10+i if res==1: b= 0 while temp !=0: a = temp%10 b= b*10+a temp = temp//10 return b else: return search(res,temp) temp=0 return search(n,temp)
class Solution: def solution(self , n ): numL = [] while True: num = self.getNum(n) if num == -1: return -1 numL.append(num) n = n/num if n == 1: break res = 0 for i in range(len(numL)): res += numL[i]*10**i return res def getNum(self,n): for i in range(9,1,-1): if n%i == 0: return i return -1