A*2=B,A*3=C,A*4=D,A*5=E,A*6=F,A,B,C,D,E,F分别都是由a,b,c,d,e,f六个数字组成(a,b,c,d,e,f都是大于0小于10的整数),求A。

解决方案 »

  1.   

    楼主,你这个由a,b,c,d,e,f组成是什么意思啊,讲得不清不楚的怎么做啊,直接abcdef这种六位数?
      

  2.   

    他的意思肯定就是大写字母表示一个向量,小写的是数字
    比如A=[a b c d e f]'
      

  3.   

    题目意思ABCDEF都是6位数,由相同的6个数字不同排列而成
      

  4.   

    //用滴方法很笨,不知有谁还有好一点滴办法
    //因ABCDEF且是由六个不同数字组成的六位数,因此F最大值为987654,且A不会超过164609
            for (int A=123456; A<164598; ++A)
            {
                if (isOK(2 * A))
                {
                    if (isOK(3 * A))
                    {
                        if (isOK(4 * A))
                        {
                            if (isOK(5 * A))
                            {
                                if (isOK (6 * A))
                                {
                                    System.out.println("◆" + A);
                                }
                            }
                        }
                    }
                }
            }
    private boolean isOK(int num)
        {
            String strNum = "" + num;        if ((strNum.length() == 6)
                && (strNum.charAt(0) != strNum.charAt(1))
                && (strNum.charAt(0) != strNum.charAt(2))
                && (strNum.charAt(0) != strNum.charAt(3))
                && (strNum.charAt(0) != strNum.charAt(4))
                && (strNum.charAt(0) != strNum.charAt(5))
                && (strNum.charAt(1) != strNum.charAt(2))
                && (strNum.charAt(1) != strNum.charAt(3))
                && (strNum.charAt(1) != strNum.charAt(4))
                && (strNum.charAt(1) != strNum.charAt(5))
                && (strNum.charAt(2) != strNum.charAt(3))
                && (strNum.charAt(2) != strNum.charAt(4))
                && (strNum.charAt(2) != strNum.charAt(5))
                && (strNum.charAt(3) != strNum.charAt(4))
                && (strNum.charAt(3) != strNum.charAt(5))
                && (strNum.charAt(4) != strNum.charAt(5)))
            {
                return true;
            }
            return false;
        }
      

  5.   

    for (int A=123456; A<165432; ++A)
            {
                if ((isOK(2 * A)) && (isOK(3 * A)) && (isOK(4 * A)) && (isOK(5 * A)) && (isOK (6 * A)))
                {
                    System.out.println("◆" + A);
                }
            }
      

  6.   

    代码错了,循环中滴判断条件应该为
    if (isOK(A) && (isOK(2 * A)) && (isOK(3 * A)) && (isOK(4 * A)) && (isOK(5 * A)) && (isOK (6 * A)))A自己也是需要判断滴结果为:◆126984◆136984◆137465◆140327◆142857◆153846◆156427◆158630◆158730◆160793
      

  7.   

    楼上的不对吧
    public class Find {

    public boolean containDup(String s){
    for (int i=1; i<=9 ;i++){
    if ( s.indexOf(i+48) < s.lastIndexOf(i+48) )
    return true;
    }
    return false;
    } public boolean sameChar(String s1,String s2){
    if (s2.length()!=6) return false;
    if ( containDup(s2) ) return false;

    for (int i=0; i<6 ;i++){
    if ( s2.indexOf( s1.charAt(i) ) == -1 ) 
    return false;
    }
    return true;
    }
       
        public void printResult(){
         String s="";
    for(int i=123456;i<=987654;i++){
    s=""+i;
    if ( containDup(s) ) continue;
    if ( sameChar(s,""+i*2) &&  sameChar(s,""+i*3) && sameChar(s,""+i*4) && sameChar(s,""+i*5) && sameChar(s,""+i*6) )
    System.out.println("A="+i+"\nB="+i*2+"\nC="+i*3+"\nD="+i*4+"\nE="+i*5+"\nF="+i*6);
    }
    }
        
        public static void main(String[] args) {
            
            Find f=new Find();
            f.printResult();        }
        
    }
    编码虽然烂了点,不过结果是对的
    A=142857
    B=285714
    C=428571
    D=571428
    E=714285
    F=857142
      

  8.   

    上面的主循环,条件可以改一下
    A的最高位只可能是1,不然E和F该是7位数了
    for(int i=123456;i<=198765;i++){
      ......................
      

  9.   


    public class NumberGuess {    private static int[] number = {0,1,2,3,4,5,6,7,8,9};
        private static int[] sixNumber = new int[6];
        private static String strA;
        
        public boolean check(int toChecked) {
            boolean checkFlag =false;
            strA = String.valueOf(toChecked);
            if(checkReapeated(strA)) {
                return false;
            }
            for(int i = 2; i < 6 ; i++) {
                if(isAppearOnce(toChecked*i,strA)) {
                    checkFlag = false;
                  break;  
                } else {
                    checkFlag = true;
                }
            }
            return checkFlag;
        }
        
        private boolean isAppearOnce(int numberToBeChecked,String sourceString) {
            boolean isAppearOnce = false;
            String strNumberToBeChecked = String.valueOf(numberToBeChecked);
            if(!checkAllCharsAppeared(strNumberToBeChecked, sourceString)) {
                isAppearOnce = true;
            }
            return isAppearOnce;
        }    private boolean checkReapeated(String sourceString) {
            boolean isRepeated = false;        
            for(int i = 0; i < sourceString.length(); i++) {
                char c = sourceString.charAt(i);
                if(sourceString.indexOf(c)!=sourceString.lastIndexOf(c)) {
                    isRepeated = true;
                    break;
                }
            }
            return isRepeated;
        }
        
        private boolean checkAllCharsAppeared(String strNumberToBeChecked,String sourceString) {
            for(int i = 0; i < 6; i++) {
                char c = sourceString.charAt(i);
                if(strNumberToBeChecked.indexOf(c)<0) {
                    return false;
                }
            }
            return true;
        }
        
        public static void main(String[] args) {
            int MAX = 200000;
            int MIN =  100000;
            NumberGuess guess = new NumberGuess();
            for(int i = MIN; i< MAX; i++) {
                if(guess.check(i)) {
                    System.out.println(i);
                    System.out.println(i*2);
                    System.out.println(i*3);
                    System.out.println(i*4);
                    System.out.println(i*5);
                    System.out.println(i*6);
                    break;
                }
            }
        }
    }
      

  10.   

    mofeir(损人专家) 你好啊
    三角得的挺快的嘛
    :)
      

  11.   

    同意zebra007(呼呼)的答案,不过你的难懂了点吧@_@public class Test {
    public static void main(String args[]) {
    int a = 0;
    final int AMAX = 987654/6;
    for(a=102345; a<=AMAX; a++) {
    if (check(""+a) ||(check(""+2*a)) || ( check(""+3*a)) 
    || (check(""+4*a)) || (check(""+5*a)) || (check(""+6*a)))
    continue;
    System.out.println(a);
    }
    } public static boolean check(String s) {
    if ( s.indexOf('0') != -1 ) {
    return true;
    }
    int len = s.length();
    for(int i=0; i<len-1; i++) {
    if (s.indexOf(s.charAt(i), i+1) != -1) {
    return true;
    }
    }
    return false;
    }
    }
      

  12.   

    我觉得你的结果虽然是对的
    但是代码有点不全面
    你没有检查A、B、C、D、E、F几个数字的组成是否相同啊
    得出这个结果应该是个巧合
      

  13.   

    你没有检查A、B、C、D、E、F几个数字的组成是否相同啊怎么可能会相等,你不会一时头晕吧
      

  14.   

    不是相等,是组成的数字集合相同
    比如A=142857
        B=285714
    他们都是由[1,2,4,5,7,8]组成的,你明明没有检查,
    我写的class也就是比你的多了一个这个方法:
    boolean sameChar(String,String)
      

  15.   

    有啊,呵呵
    "A,B,C,D,E,F分别都是由a,b,c,d,e,f六个数字组成"