随机生成1,2,3,4,5,6,7,8,9,并且使用它们 组合成3个 数,如327 654 981,第2个数是第一个数的2倍,第3个数是第一个数的3倍,并且不能出现重复数字输入一个字符串能实现四则运算 如 输入2+3*3 结果就为11.

解决方案 »

  1.   

    第一题, for (int i=123; i<=329; i++){ //比111大的最小数123,比333小的最大数
    Set numbers = new HashSet();
    numbers.add(i%10);
    numbers.add(i/100);
    numbers.add(i/10%10);
    numbers.add(i*2%10);
    numbers.add(i*2/100);
    numbers.add(i*2/10%10);
    numbers.add(i*3%10);
    numbers.add(i*3/100);
    numbers.add(i*3/10%10);
    if (numbers.size()==9)
    System.out.println("" + i + "," + i*2 + "," + i*3);
    }有5组解。
      

  2.   

    哦,注释少了点,不过很简单,就是从123循环到329(其他数超范围,没必要看)
    取i i*2 i*3这三个数的各个数字加到一个集合中,集合长度如果为9,则表明数字没有重复,那这个i就是一个解,将其打印出来即可。
      

  3.   

    for (int i=123; i<=329; i++){ //比111大的最小数123,比333小的最大数
                Set numbers = new HashSet();
                numbers.add(i%100);  //取个位数    
                numbers.add(i/100);  // 取百位数
                numbers.add(i/10%10); // 取十位数
                numbers.add(i*2%100);  //取两倍时个位数
                numbers.add(i*2/100);    //取两倍时百位位数
                numbers.add(i*2/10%10);  //取两倍时十位数
                numbers.add(i*3%100);    //取三倍时个位数
                numbers.add(i*3/100);//取三倍时佰位数
                numbers.add(i*3/10%10);//取三倍时十位数
                if (numbers.size()==9)  // 利用set 集合不能存放重复值   不需个要考虑十位数 百位数是0  如果是0  set 集合将不能存放9个值  最多只能存放 7
                    System.out.println("" + i + "," + i*2 + "," + i*3);
            }