1148 三角形

三角形

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;
}

猜你喜欢

转载自blog.csdn.net/weixin_42987451/article/details/83066323