一个6位数乘以一个3位数得出一个结果。但不清楚6位数中的两个数字是什么,而且结果中有一位数字也不清楚
,请给出算法,找出乘数和积的值。。        12?56?
         * 123
       __________
           154?4987

解决方案 »

  1.   

    循环1000次,方法比较笨
    public static void test1() {
    String chengshu1 = "12?56?";
    int ji = 123;
    String jieguo = "154?4987";
    int num = 0;
    for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
    num = Integer.parseInt(chengshu1.replaceFirst("\\?", i+"").replace("?", j+""));
    for (int k = 0; k < 10; k++) {
    if(num*ji == Integer.parseInt(jieguo.replace("?", k+""))) {
    System.out.println(num);
    System.out.println(Integer.parseInt(jieguo.replace("?", k+"")));
    }
    }
    }
    }
    }
      

  2.   

    这样就够了:
    for(int x=0;x<=9;x++)
    for(int y=0;y<=9;y++)
    for(int z=0;z<=9;z++){
    if((120560+x*1000+y)*123==(15404987+z*10000)){
    System.out.println("x="+x+",y="+y+",z="+z);
    }
    }
      

  3.   

    循环 9 次就可以搞定package com.keeya.csdn.test;public class Test { public static void main(String[] args) {
    int multiplier = 123;
    String multiplicand = "12?56?";
    String result = "154?4987";
    getNumber(multiplier,multiplicand,result); }

    //未知数必须是用 ? 代替
    public static void getNumber(int multiplier, String multiplicand, String result){
    int index = result.indexOf('?');
    int head = Integer.valueOf(result.substring(0,index));
    int end = Integer.valueOf(result.substring(index + 1));
    int quotient;
    int num = 0;
    for(int i = 0; i < 10; i++){
    num = Integer.valueOf("" + head + i + end ); 
        if(num % multiplier != 0 ){
         continue;
        }
        quotient = num / multiplier ;
        if(isQuite(multiplicand,String.valueOf(quotient))){
         System.out.println(quotient + " * " + multiplier + " = " + num);
        }
    }
    }
    public static boolean isQuite(String str1 , String str2){
    if(str1.length() != str2.length())
    return false;
    for(int i = 0; i < str1.length(); i++){
    if(str1.charAt(i) != '?' &&  str1.charAt(i) != str2.charAt(i))
    return false;
    }
    return true;
    }
    }
    测试结果:
    125569 * 123 = 15444987
      

  4.   

    哎 脑子进水了我 
    把问题复杂化了
    给出修改后的
    package com.keeya.answer.test;public class Test { public static void main(String[] args) {
    int multiplier = 123;
    String multiplicand = "12?56?";
    String result = "154?4987";
    getNumber(multiplier,multiplicand,result); }

    //未知数必须是用 ? 代替
    public static void getNumber(int multiplier, String multiplicand, String result){
    int num ;
    for(int i = 0; i < 10; i++){
    num = Integer.valueOf(result.replace("?", String.valueOf(i))); 
        if(num % multiplier != 0 ){
         continue;
        }
        if(isQuite(multiplicand,String.valueOf(num / multiplier))){
         System.out.println(num / multiplier + " * " + multiplier + " = " + num);
        }
    }
    }
    public static boolean isQuite(String str1 , String str2){
    if(str1.length() != str2.length())
    return false;
    for(int i = 0; i < str1.length(); i++){
    if(str1.charAt(i) != '?' &&  str1.charAt(i) != str2.charAt(i))
    return false;
    }
    return true;
    }
    }
      

  5.   

    现在我做的测试任务,和java没什么关系,都快把java忘了。。
    迷茫我相信有一堆人和我一样,迷茫。。哈哈。。
      

  6.   

    呵呵
    我也差不多了
    现在只记得Java语言 其他的都忘了