03. 找一个最小的自然数,使它等于不同的两组三个自然数的三次幂之和,即找最小的x,使得:
x=a*a*a+b*b*b+c*c*c+d*d*d+e*e*e+f*f*f
其中,a,b,c,d,e,f都是自然数,a<=b<=c<=d<=e<=f; [a,b,c]!=[d,e,f]
解:
利用上一问题的求解思想,上一问题在正方形平面下三角区内找解,本题在正立方体的下三角棱内找解。记i为三角棱体的平面,j为某平面的行,k为某行上的列。当前考察的下三角棱体的范围由最上平面至最下平面控制;对应每个平面的下三角区域,在每个下三角区域内当前待考查的行可由行的下界和上界控制,每个有效行上的候选列由其当前列来表示。因此有如下解法:
算法---找一个最小的自然数x,使它等于不同的两组三个自然数的三次幂之和
{
以三角棱体的顶点为最初候选者;
为最初寻找平面设定行的变化范围和列的初值;
do
{
保存上一个候选者;
if(当前候选者在最下平面)
{
寻找平面范围的最下平面向下进一层;
为新平面设定行的变化范围;
}
if(在最上平面最下角点找到候选者)
寻找平面范围的最上平面向下进一层;
else
{
if(在第一列找到候选者)