您的位置 首页 编程语言

smallest(n)

美国面试题:

 

1. The number 124 has the property that it is the smallest number whose first three multiples contain the digit 2. Observe that
124*1 = 124, 124*2 = 248, 124*3 = 372 and that 124, 248 and 372 each contain the digit 2. It is possible to generalize this property to be the smallest number whose first n multiples each contain the digit 2. Write a function named smallest(n) that returns the smallest number whose first n multiples contain the digit 2. Hint: use modulo base 10 arithmetic to examine digits.
Its signature is int smallest(int n)
You may assume that such a number is computable on a 32 bit machine, i.e, you do not have to detect integer overflow in your answer.

 

 

2. 样例:

 

 

3.java 代码实现

public class smallestN {
    public static void main(String[] args) {

//        1243==4062i=4062j=1
//        1243==8124i=4062j=2
//        1243==12186i=4062j=3
//        1243==16248i=4062j=4
//        1243==24372i=4062j=6
//        1243==28434i=4062j=7
//        System.out.println(isContian2(124*4));
        System.out.println(smalles(1));

    }

    public static int  smalles(int n){
        int i =0;

        while (true){
            i++;
            if(isContian2(i)==1){
                int tmp=0;
                for (int j = 1; j <= n ; j++) {
                    if(isContian2(j*i)==1){
                        System.out.println("1243=="+j*i+"i="+i+"j="+j);
                        tmp++;

                    }

                }

                if(tmp==n){
                    System.out.println("tmp"+tmp);

                    return i;
                }


            }

        }


    }

    /**
     * 求一个数字是否包含2
     * @param n
     * @return
     */

    public static int isContian2(int n){
        while (true){
            if(n%10==2){
                return 1;
            }
            n = n/10;
            if(n==0){
                return 0;
            }
        }
    }
}

关于花猫大叔短视频创业 作者: hadoopall

热门文章

发表评论

电子邮件地址不会被公开。