|
发表于 2010-3-25 12:57:15
|
显示全部楼层
方程是这样的:5x + 4y + 3z = I,其中 I 为任意给定整数,要求出任何一组 x, y, z 的解即可,只要一组,要能判断有没有解。注意 I 的值在 10000 左右。速度越快越好。
拜托了!!!
问题点数:123、回复次数:5
Top
1 楼enlightenment(破冰超人)回复于 2001-05-20 00:01:00 得分 3
1、x、y、z是否必须为整数?
2、x、y、z是否必须为正数?
Top
2 楼Arbor(Arbor)回复于 2001-05-20 00:03:00 得分 0 1、是!!!
2、是!!!
Top
3 楼kimryo(God is on my side)回复于 2001-05-20 00:04:00 得分 20用行列式的方法试试?求通解(General Solution).n取1便行!
Top
4 楼enlightenment(破冰超人)回复于 2001-05-20 12:59:00 得分 100procedure CalcuValue(MyI:integer);
var
i,j:integer;
Vx,Vy,Vz:integer;
begin
Vx:=MyI div 5;
While Vx>0 do
begin
Vy:=0; Vz:=0;
while (Vx*5+Vy*4)<MyI do
begin
Inc(Vy);
if (Vx*5+Vy*4)>=MyI then
begin
Vy:=0; {Dec(Vx);} break;
end;
while(Vx*5+Vy*4+Vz*3)<MyI do
begin
Inc(Vz);
//若成立
if (Vx*5+Vy*4+Vz*3)=MyI then
begin
ShowMessage(IntToStr(Vx)+' '+IntToStr(Vy)+' '+IntToStr(Vz));
Exit;
end;
//若大于表达式右边值
if (Vx*5+Vy*4+Vz*3)>MyI then
begin
Vz:=0; Break;
end;
end; //end while (Vx*5+Vy*4+Vz*3)<MyI
end;//end while (Vx*5+Vy*4)<MyI do
Dec(Vx);
end;
ShowMessage('无解');
end; |
|