三角形
1、题目内容
Description
题目描述
给一个序列,按下面的方式进行三角形累加,求其和值。 比如序列为 1,2,3,4,5
1 2 3 4 5
3 5 7 9
8 12 16
20 28
48
输入
有多组样例。每个样例的第一行是一个整数N(1≤N≤100),表示序列的大小, 如果N为0表示输入结束。这个样例不需要处理。 第二行是N个整数,每个整数处于[0,100]之间。
输出
每行输出一个样例的结果,由于结果可能很大,请将结果对2013取模。
样例输入
5
1 2 3 4 5
2
1 1
0
样例输出
48
2
2、题目分析
看到这个题目,让人联想到的是高中数学所学的杨辉三角问题。这个题目主要就是考查了怎么算这个。每一个数都等于它的“肩”上那两个数的和。通过不断累加的方式得出结果。
3、参考代码
#include<stdio.h>
int main()
{
int n; //n记录数的个数
while(scanf("%d",&n)!=EOF&&n!=0)
{
int i;
int num[101];
for(i=0;i<n;i++) //用数组记录那n个数
{
scanf("%d",&num[i]);
}
for(int i=n-1;i>0;i--) //累加n-1次
{
for(int j=0;j<i;j++) //每累加一次,数的个数减一
{
num[j]=(num[j]+num[j+1])%2013; //这个地方是核心,不断进行累加
}
}
printf("%d\n",num[0]); //最终都会只剩下一个最终结果数
}
return 0;
}