题目描述
给一个序列,按下面的方式进行三角形累加,求其和值。 比如序列为 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
本题较为简单,稍微讲解一下,直接贴AC代码。
num[]数组存数据,之后每一行计算也是在 num 数组上进行。
三角形一共有 n 行,第1行是输入数据,之后的每一行是 上一行“对应位置”和“后面一位”,两位数相加。 所以第一个for循环 i = 1,从第二行开始算。
#include <stdio.h>
int main()
{
int n;
int num[110];
const int Mod = 2013;
while (scanf("%d",&n) != EOF && n != 0)
{
for (int i = 0; i < n; i ++)
scanf("%d",&num[i]);
for (int i = 1; i < n; i ++)
for (int j = 0; j < n-i; j ++)
num[j] = (num[j]+num[j+1]) % Mod;
printf("%d\n",num[0]);
}
return 0;
}
3973

被折叠的 条评论
为什么被折叠?



