阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。 【说明】 找一个最小的自然数,使它等于不同的两组三个自然数的三次幂之和,即找最小的x,使得:x=a*a*a+b*b*b+c*C*c+d*d*d+e*e*e+f*f*f,其中,a、b、c、

admin2009-02-15  9

问题 阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。
【说明】
   找一个最小的自然数,使它等于不同的两组三个自然数的三次幂之和,即找最小的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)
   【C++程序】
   #include<stdio.h>
   #define N 100
   void main  ()
   {
       int i,j,il,ih,i0,j0,k0,il,j 1,k1;
       int j1[N],jh[N];/*第i层平面的行的变化范围,自jl至jh*/
       int k[N][N];/*第i层平面中,对应行j,当前的列号值为k[j]*/
       int p[N], min;/*p=i*i*i*/
       i1=1;j1=1;k1=1;/*首先只局限下三角棱体的顶点*/
       i1=1;ih=1;/*预置i的变化范围初值i1<=i<=ih*/
       j1[1]=1;jh[1]=1;/*对应i层平面的行的变化范围*/
       k[i1][j1[i1>=1;/*第i层平面中,对应行的列的初值*/
       p[1]=1;
       do
       {
       min=p[i1]+p[j1]+p[k1];
       i0=i1;j0=j1;k0=k1;
       if ( i1==ih ) /*当前候选者在ih平面, 则ih增1*/
       {
       ih++;
         (1);
       /*为ih平面设定j的变化范围和对应k值*/
      j1[ih]=1;jh[ih]=1;k[ih][1]=1;
      }
      if ( i1==i1&&j 1==i1&&k1==i1 )
      i1++;/*在i1平面最下角点找到候选者,i1增1*/
      else
      {
          if ( k1==1&&jh[i1]<i1 )
             {/*在第一列找到候选者, i1平面的行的上界增1*/
               (2);
             k[i1][jh[i1>=1;
   }
    if( k1==j1&&j1[i1]<i1 )
    else
     (3);/*调整i1平面当前行的列号*/
    }
      i1=i1;/*预定最上平面的最小行的当前列为下一个候选者*/
      j1=j1[i1];
      k1=k[i1][j1];
      for ( i=i1;i<=ih;i++ ) /*寻找最小值所在平面号、行号和列号*/
      {
      for ( j=j1;j<=jh;j++ )
      if ( p+p[j]+p[k[j><(4))
      {
         i1=i;j 1=j;k1=k[j];
       }
       }
       }while ( p[i1]+p[j1]+p[k1]!=min&&(5));
       if ( p[i1]+p[j1]+p[k1]==min )
       printf ( "%4d=%2d^3+%d^3+%dA3=%2d^3+%d^3+%d^3\n",min,i0,j0,k0,i1,j1,k1 );
       else printf ( "The %d is too small.\n",N );
   }

选项

答案(1)p[ih]=ih*ih*ih (2) jh[i1]++ (3) k[i1][j1]++ (4) p[i1]+p[j1]+p[k1] (5) ih!=N

解析
转载请注明原文地址:https://jikaoti.com/ti/2TW7FFFM
0

最新回复(0)