四个不同自然数a <b <c <d 满足a^2+b^2+c^2+d^2=abcd,列出1亿内的所有组合
. 四个不同自然数a <b <c <d 满足a^2+b^2+c^2+d^2=abcd,列出1亿内的所有组合。
分析:
a[0]^2+a[1]^2+a[2]^2+a[3]^2=a[3]*(10^k+0)+a[2]*(10^k+1)+a[1]*(10^k+2)+a[0]*(10^k+3)
------------d-------------c--------------b-------------a
<100,000,000
设 num=abcd
int num //记数
a[3]*(10^k+0)+a[2]*(10^k+1)+a[1]*(10^k+2)+a[0]*(10^k+3)=num |
a[0]^2+a[1]^2+a[2]^2+a[3]^2=num | num< 10^8
a[0]<a[1]<a[2]<a[3] |
a=a[0] =mun -a[3]*(10^k+0)+a[2]*(10^k+1)+a[1]*(10^k+2) =a[0]*(10^k+3) /求出A
b=a[1] .
c=a[2] .
d=a[3] .
-----------------------------------------------------------------------------------
class NUM
{
public class min(){
int k //指数常量
string a[i]
for (i=0;i<3;i++){
for {
a[0]<a[1]<a[2]<a[3] ;
}
do (num = 0 ,num < 10^8,num++ )
{
temp = a[0]*(10^k+3) ;
{
temp1.do()
}
}
will
{
mun = a[3]*(10^k+0)+a[2]*(10^k+1)+a[1]*(10^k+2)+a[0]*(10^k+3)
}
system.out.priteln("THE NUMBER IS+ "+ num);
}
-----------------------------------------------
abstract class temp{
int temp(temp =1;temp<1*10^8;temp++);
temp.do();
}
class temp1 extends temp{
temp = a[0]*(10^k+3) ;
temp1 = new temp;
temp1.do (){
swich(k=0;k<8;k++){
case1:
temp1 =a[0]*(10^k+3);
system.out.priten("a是:"+temp1);
csae2:
temp1 =a[1]*(10^k+2);
system.out.priten("b是:"+temp1);
csae3:
temp1 =a[2]*(10^k+1);
system.out.priten("c是:"+temp1);
csae3:
temp1 =a[3]*(10^k+0);
system.out.priten("d是:"+temp1);
}
}
}
高手看看我思路对吗?
我想的是(定长)枚举