黑马程序员技术交流社区

标题: 亲们,进来看看这个题吧! [打印本页]

作者: 黄方    时间: 2012-2-27 15:07
标题: 亲们,进来看看这个题吧!
又来一题了哦,感兴趣的写写!别因为题长儿胆怯了哦
考虑方程式:a^3 + b^3 = c^3 + d^3其中:“^”表示乘方。a、b、c、d是互不相同的小于30的正整数。这个方程有很多解。
比如:a = 1,b=12,c=9,d=10 就是一个解。
因为:1的立方加12的立方等于1729,而9的立方加10的立方也等于1729。
当然,a=12,b=1,c=9,d=10 显然也是解。如果不计abcd交换次序的情况,这算同一个解。
你的任务是:找到所有小于30的不同的正整数解。
把a b c d按从小到大排列,用逗号分隔,每个解占用1行。比如,刚才的解输出为:1,9,10,12不同解间的顺序可以不考虑。{:soso_e121:}
作者: 唐学松    时间: 2012-2-27 15:17

class a
{
public static void main(String[] args)

        {
            int a,b,c,d ,         s[4]={0,0,0,0},             i,j, t, flag=0;

        for(a=0;a<30;a++)              //A的取值不大于30
        {
                for(b=0;b<30;b++)          //B的取值不大于30
                {
                        for(c=0;c<30;c++)      //C的取值不大于30
                        {
                                for(d=0;d<30;d++)   //D的取值不大于30
                                       
                                               if((a*a*a+b*b*b==c*c*c+d*d*d)&&a!=b&&b!=c&&c!=d&&a!=c&&a!=d&&b!=d)
                                                //判断a^3+b^3=c^3+d^3,A,b,c,d是否小于30,是否不同的正整数
                                        {
                                                s[1]=a;
                                                s[2]=b;
                                                s[3]=c;
                                                s[4]=d;
                                        }
                                for(i=0;i<3;i++)         //排序
                                {
                                        for(j=0;j<3-i;j++)
                                                if(s[j]<s[j+1])
                                                {
                                                        t=s[j];
                                                        s[j]=s[j+1];
                                                        s[j+1]=t;
                                                }
                                }
                                for(i=0;i<4;i++)       //输出
                                       
                                   System.out.printf(s[i]);

                                System.out.printf("\t");
                               
                                     flag++;
                                if(flag==3)        //控制一行输出个数
                                {
                                        flag=0;
                                        System.out.printf("   ");
                                }
                        }
                }
        }
   }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2