如果数+学+金+字+塔=30,当算式成立“数字金字塔”代表的五位数是什么?

如果数+学+金+字+塔=30,当算式成立“数字金字塔”代表的五位数是什么?,第1张


字 塔
金 字 塔
学 金 字 塔
+ 数 学 金 字 塔
————————————
3 学 金 字 塔
5个塔相加后还是尾数还是塔,所以塔等于5,即5塔相加后进2
4个字相加后加2尾数还是字,所以字等于6,即4字相加后进2
3个金相加后加2尾数为金,所以金等于9,即3金相加后进2
2个学相加后加2尾数为学,所以学等于8,即2学相加后进1
所以数等于2
综上:
数=2
学=8
金=9
字=6
塔=5

按照你的要求编写的数字金字塔的Python程序如下(abs()是求绝对值的函数)

n=5

for i in range(1,2n+2):

for j in range(1,abs(n-i)+1):

print(" ",end='')

for j in range(1,n-abs(n-i)+1):

print(j,end='')

for j in range(n-abs(n-i)-1,0,-1):

print(j,end='')

print()

源代码(注意源代码的缩进)

这样应该可以

#include<stdioh>

int main()

{

int repeat;

scanf("%d",&repeat);

int a[repeat];

for(int i=0;i<repeat;i++)

      scanf("%d",&a[i]);

  for(int j=0;j<repeat;j++)

      for(int i=1;i<=a[j];i++)

      {

          for(int k=1;k<=2i-1;k++)

          {

              printf("%d",i);

              printf(" ");

          }

          printf("\n");

      }

return 0;

}

#include <stdioh>
int main( )  
{  
    int i,j,n=6;      //输出其它行,请自行修改n的值
    for(i=1;i<=n;++i) //一共要输出n行  
    {  
        //输出第i行  
        for(j=1; j<=n-i; ++j) //输出n-i个空格  
            printf(" ");  
        for(j=1; j<=2i-1; ++j) //输出2i-1个星号  
            printf("");  
printf("\n");  
    }  
    return 0;     
}

规律就是从数字金字塔顶把3个数字看做一个三角形。数字塔算上X那行 一共七行,从顶到底依次加减法循环:(其中,除了塔尖1外,奇数行的第一位数字是上偶数行的数字和,偶数行的最后一位数字是上奇数行的和且偶数行的第一位数字均为上奇数行的前两位数字相减得到,奇数行的最后一位数字均为上偶数行后两位数字相减得到,所以那规律来看奇数行的前两位数字相同,偶数行的后两位数字相同)

例如:

(1)第一行是一个数字三角形:(相加)

         规律结论:第二行的1=第二行的0+第一行的1。

(2)第二行两个数字三角形:(相减)

    规律结论分别计算:①第三行第一个1=第三行的1-第三行第二个1 ;②第二行的1=第三行第二个1-第三行的0。

(3)第三行是三个数字三角形:(相加)

规律结论分别计算:第四行的0=第三行的1-1①第三行第一个1+第四行的0=第四行第二个1 ;②第三行第二个1+第四行的1=第四行的第一个2 ;③第三行的0+第四行的第一个2=第四行的第二个2

(4)第四行四个数字三角形:(相减)

规律结论分别计算:①第四行的0=第五行的5-5 ;②第四行的1=第五行的5-4 ;③第四行第一个2=第五行的4-2 ;④第四行第二个2=第五行的2-0

以此类推第七行(相加)第一位数字为0,第二位61+0=61,第三位61+61=122,第四位X=122+56=178

所以,答案是 A  178

//程序是用c写的,稍微弄下就变c++了
#include <stdioh>
long l[1002][1002]={0}; //数组比较大,所以用全局的
int main()
{
int i,j,n;
long max=0; //max用来存最大的路径和
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
{
scanf("%ld",&l[i][j]); //读入每个数
if(l[i-1][j-1]>l[i-1][j])l[i][j]+=l[i-1][j-1]; //因为每一步可以走到左下方的点也可以到达右下方的点,
else l[i][j]+=l[i-1][j]; //所以每个点只能由(i-1,j-1),(i-1,j)两个位置过来,取两个点最大的
if(l[i][j]>max)max=l[i][j]; //若大于当前最大路径和则替换
}
printf("%ld\n",max);
return 0;
}

双重for循环,自己真的挺惭愧,算法都知道,我的C++,C#,java简单语法混淆了。。
int i, j;
for (i = 1; i <= 5; i++)
{
for (j = 1; j <= 2 i - 1; j++)
{
if (j <= i)
{
ConsoleWrite(j); //c++输出语句 cout<<j;混淆了好久。。
}
else
{
ConsoleWrite(2 i - j);
}
}
ConsoleWriteLine("\r");
}

能。
数字金字塔是一道计算题,在金字塔的最下面有个数字,根据提示的运算符号做加减法,从下往上做,一直做到最上面,就能登上数学金字塔了。
数字金字塔是一款角色扮演游戏,游戏大小为1MB。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12991705.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存