2位数乘2位数得四位数,乘数跟被乘数每位上的数必须是四位数的组合。显示所有这样的四位数。如1260=21*60.

解决方案 »

  1.   

    for(int i=1000;i<=9999;i++)
    {
       int num=i;
       int a=number/1000= 
       int b=(num-a*1000)/100 
       int c=(num-a*1000-b*100)/10 
       int d=num-a*1000-b*100-c*10   //然后再判断比如a*10+b是否与b*10+d相等,相等就输出,
          排列组合,4个数字,4个位置,要判断很多次,没有想到好的办法。
    }
      

  2.   


    上面我写错了,不是“a*10+b是否与b*10+d相等,相等就输出,”是判断 num==(a*10+b)*(b*10+d)
      

  3.   

    不知道效率怎么样,呵呵!!!import java.util.ArrayList;public class NumberGame {
    public static void main(String[] args){
    ArrayList list = new ArrayList();
    int a,b,c,d;
    for(int i=10;i<100;i++){
    a = i%10;
    b = i/10;
    for(int j=10;j<100;j++){
    c = j%10;
    d = j/10;
    int tmp = i*j;
    if(tmp<1000){
    continue;
    }
    list.clear();
    while(true){
    list.add(tmp%10);
    if(tmp%10 == tmp){
    break;
    }
    tmp = tmp/10;
    }
    list.remove((Object)a);
    list.remove((Object)b);
    list.remove((Object)c);
    list.remove((Object)d);
    if(list.size()!=0){
    continue;
    }
    System.out.print(i+"*"+j+"="+i*j+" ");
    System.out.println();
    }
    }
    }
    }
      

  4.   

    改进一下import java.util.ArrayList;public class NumberGame {
    public static void main(String[] args){
    ArrayList list = new ArrayList();
    ArrayList list1 = new ArrayList();
    int a,b,c,d;
    for(int i=10;i<100;i++){
    a = i%10;
    b = i/10;
    for(int j=10;j<100;j++){
    c = j%10;
    d = j/10;
    int tmp = i*j;
    if(tmp<1000){
    continue;
    }
    list.clear();
    while(true){
    list.add(tmp%10);
    if(tmp%10 == tmp){
    break;
    }
    tmp = tmp/10;
    }
    list.remove((Object)a);
    list.remove((Object)b);
    list.remove((Object)c);
    list.remove((Object)d);
    if(list.size()!=0){
    continue;
    }
    list1.add(i);
    if(list1.contains((Object)j)){
    continue;
    }
    System.out.print(i+"*"+j+"="+i*j+" ");
    System.out.println();
    }
    }
    }
    }
      

  5.   

    我有个,发出来看看,测过有结果!package com.test;import java.util.HashMap;
    import java.util.Map;public class FourNum {

    public static void main(String[] args){

    for (int i=10; i<=99; i++){
    for (int j=10; j<=99; j++){
    int a = i/100;
    int b = i%10;
    int c = j/100;
    int d = j%10;
    int num = i*j;

    int a1 = num/1000;
    int b1 = (num - a1*1000)/100;
    int c1 = (num - a1*1000 - b1*100)/10;
    int d1 = num%10;

    Map<Integer, String> m = new HashMap<Integer, String>();
    m.put(a1, "");
    m.put(b1, "");
    m.put(c1, "");
    m.put(d1, "");

    if (a1 != 0 && m.containsKey(a) && m.containsKey(b) && m.containsKey(c) && m.containsKey(d)){
    System.out.println(num+" "+i+" "+j);
    }
    }
    }

    }
    }
      

  6.   

    不想动脑子,动动嘴巴应该可以把一些不可能出现的case排除掉吧。
    比如某些数字相乘不可能到四位数,某些数字相乘会成为5位数等等帮推good luck
      

  7.   

    if判断中第一个就是要求num为4位数
    其他判断就是要求a,b,c,d和a1,b1,c1,d1中组合相等,用HashMap里key值包含比较简便,如果用判断
    (a==a1 && b==b1 && c==c1 && d==d1) ||
    (a==b1 && b==a1 && c==c1 && d==d1) ||
    ....
    来穷举也可以,不过看着有点烦
      

  8.   

    public class XiXieGui{
            public static void main(String[] args){
               String[] ar_str1,ar_str2; 
               int sum=0; 
               for(int i=10;i<100;i++){ 
                   for(int j=i+1;j<100;j++){ 
                        int i_val=i*j; 
                        if(i_val<1000||i_val>9999) continue; //积小于1000或大于9999排除,继续下一轮环 
                        ar_str1=String.valueOf(i_val).split(""); 
                        ar_str2=(String.valueOf(i)+String.valueOf(j)).split(""); 
                        java.util.Arrays.sort(ar_str1); 
                        java.util.Arrays.sort(ar_str2); 
                        if(java.util.Arrays.equals(ar_str1, ar_str2)){
                        //排序后比较,为真则找到一组 
                            sum++; 
                            System.out.println("第"+sum+"组: "+i+"*"+j+"="+i_val); 
                       } 
                  } 
              } 
              System.out.println("共找到"+sum+"组吸血鬼数"); 
            }
    }