重在分析源问题,不要写硬编码public class TestOne
{
    public static void main(String []args)
    {
     int a[]= cal(1,2,3,3,2001);
    for(int i=0;i<4;i++)
    System.out.println(a[i]);
    }    
static int[] cal(int a, int b, int c,int d, int target){
int i = -a+b, j=2+d, k=c*j+1;
int div = (target-i)*c/k,mod = (target-i)*c%k;
int result[] = new int[4];
if(mod==0 && div!=0){
result[0]=div-a;result[1]=div+b;result[2]=div/c;result[3]=div*d;
return result;
}else{
return result;
}
}
}

解决方案 »

  1.   

    to: ntzls(三星堆)
    能说一下分析问题的思路吗
    你的方法是很好,就是不明白
      

  2.   


    条件:(1)(q+a)==(w-b)==(e*c)==(r/d)==x   (2)(q+a)+(w-b)+(e*c)+(r/d)==target 解:
    (x-a)==(x+b)==(x/c)==(x*d)(x-a)+(x+b)+(x/c)+(x*d)=target(2+d+1/c)*x=target+a-b(((2+d)*c+1)/c)*x=target+a-bx=(target+a-b)/(((2+d)*c+1)/c)x=((target+a-b)*c)/((2+d)*c+1)算出x不就出来了,好像是小学生的题目public class TestOne
    {
        public static void main(String []args)
        {
         cal(1,2,3,3,2001);
        }    
    static void cal(int a, int b, int c,int d, int target){
    int div=((target+a-b)*c)/((2+d)*c+1),
                             mod=((target+a-b)*c)%((2+d)*c+1);
    if(mod==0 && div!=0){
    System.out.println("a="+(div-a)+",b="+(div+b)+",c="+(div/c)+",d="+(div*d));
    }else{
    System.out.println("无解");
    }
    }
    }
      

  3.   

    嗯,是我没看清楚你的程序.想法是一样的.
    但是因为(q+a)==(w-b)==(e*c)==(r/d)==x,不能说明(x-a)==(x+b)==(x/c)==(x*d)
    只能说q==x-a,w==x+b,e==x/c,r==x*d.
      

  4.   

    (x-a)==(x+b)==(x/c)==(x*d)此句删除