[编程题]数位之积

来源:牛客vivo2020届春季校园招聘在线编程考试

现给定任意正整数 n,请寻找并输出最小的正整数 m(m>9),使得 m 的各位(个位、十位、百位 … …)之乘积等于n,若不存在则输出 -1。

思路:

大数放后,小数放前,不断取余。

import java.util.*;

public class Solution {
    /**
     * 输入一个整形数值,返回一个整形值
     * @param n int整型 n>9
     * @return int整型
     */
    public int solution (int n) {
        // write code here
        if(n < 10) return 10 + n;
        else{
            int count = 1;
            int rtn = 0;
            while(n >= 10) {
                int i = 9;
                for(; i > 1; i--) {
                    if(n % i == 0) {
                        rtn = rtn + count * i;
                        count = count * 10;
                        n = n / i;
                        break;
                    }
                }
                if(i == 1) return -1;
            }
            return rtn + count * n;
        }
    }
}

你可能感兴趣的:(OJ随笔)