甘肃省建设厅官网站,网站建设初级教程,东鹏瓷砖设计家官网,网站主题咋做一、链接
1148 三角形
二、题目
题目描述
给一个序列#xff0c;按下面的方式进行三角形累加#xff0c;求其和值。 比如序列为 1,2,3,4,5
1 2 3 4 53 5 7 98 12 1620 2848输入
有多组样例。每个样例的第一行是一个整数N(1≤N≤100),表示序列的大小按下面的方式进行三角形累加求其和值。 比如序列为 1,2,3,4,5
1 2 3 4 53 5 7 98 12 1620 2848
输入
有多组样例。每个样例的第一行是一个整数N(1≤N≤100),表示序列的大小 如果N为0表示输入结束。这个样例不需要处理。 第二行是N个整数每个整数处于[0,100]之间。
输出
每行输出一个样例的结果,由于结果可能很大请将结果对2013取模。
样例输入
5
1 2 3 4 5
2
1 1
0
样例输出
48
2
三、题意
相当于把相邻的两个数相加直到最后只剩下一个数字最后输出这个数字
四、代码
c代码
#includeiostreamusing namespace std;const int N100;int a[N];int main()
{int n;while(scanf(%d,n),n!0){for(int i0;in;i) scanf(%d,a[i]);for(int i0;in-1;i){int tempn-1;for(int j0;jtemp;j){int sum0;sum(a[j]a[j1])%2013;a[j]sum;}temp--;//printf(%d\n,a[0]);}printf(%d\n,a[0]);}return 0;
}
c语言代码
#includestdio.hint a[10010];int main()
{int n;while(scanf(%d,n),n!0){for(int i0;in;i) scanf(%d,a[i]);for(int i0;in-1;i){int tempn-1;for(int i0;itemp;i){int suma[i]a[i1];a[i](sum)%2013;}temp--;}printf(%d\n,a[0]);}return 0;
} 五、总结
1.这个算是一个朴素模拟和观察分析的题目
2.模拟样例1 2 3 4 5会进行4次计算每一个的计算结果都比上一行数字个数减少1也就是说5个数字经过4次计算最后只剩下一个数字推而广之n个数字经过n-1轮计算数字元素经过一轮计算减少一个数字元素最后只剩下一个计算结果就是我们要求的答案
由特殊样例抽象为一般化的结论
3.利用数组的特性每进行一次计算我们把计算结果存储在前一个数组元素里面比如说计算a[0]a[1], 把结果存在a[0]里面计算a[1]a[2]把结果存在a[1]里面就是这几行代码
经过一次计算之后该次计算的被加数在下一次计算中不会再被用到所以我们可以把该词2计算的结果存储在被加数的位置
int suma[i]a[i1];
a[i](sum)%2013;
根据题目要求防止数字过大需要对2013进行取模运算
4.n个数字n-1轮计算每一轮计算之后数字总个数减小1使用这几行代码实现 int tempn-1;for(int i0;itemp;i)
{int suma[i]a[i1];a[i](sum)%2013;
}temp--;
5.遇到这种个题目耐心观察模拟即可
六、精美图片