首页 > 试题广场 >

交替加减

[编程题]交替加减
  • 热度指数:81 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
~~~~~~由  个整数构成的数组 \{a_1,a_2,\dots,a_n\} ,我们有如下操作:
~~~~~~~~~\bullet\你必须在这些整数之间交替写下加减符号,例如假设数组初始值 \{1,2,3,4\} ,交替写下加减符号变为 1 + 2 - 3 + 4 ;
~~~~~~~~~\bullet\此时会生成第二行数组 \{ 1+2,2-3,3+4 \} ,即 \{ 3,-1,7 \} ;随后,再次交替写下加减符号变为 由于上一行末尾是 + ,所以这一行的开头是 - );
~~~~~~~~~\bullet\此时会生成第三行数组 \{ 4,6 \} ,继续重复上述操作;
~~~~~~~~~\bullet\直到最后只剩下唯一一个数字时,中止操作,在上方的样例中,最后剩下的数字为  
~~~~~~现在,你需要独立求出给定的数组剩下的最后一个值是多少。

输入描述:
~~~~~~第一行输入一个整数 n \ (1 \le n \le 10^5) 代表数组中的元素数量。
~~~~~~第二行输入 n 个整数 a_1,a_2,\dots,a_n\ (1 \le a_i \le 10^9) 代表数组元素。


输出描述:
~~~~~~在一行上输出一个整数,表示剩下的最后一个值。由于答案可能很大,只需要输出答案对 10^9 + 7 取模的结果。
示例1

输入

4
1 2 3 4

输出

1000000005

说明

~~~~~~该样例已在题面中说明,注意,负数也需要取模。
头像 Silencer76
发表于 2025-08-31 03:09:00
题目链接 交替加减 题目描述 给定一个由 个整数构成的数组,进行如下操作: 在数组元素之间交替插入 + 和 - 号(第一个是 +),形成一个表达式并计算,得到一个新数组。 对新数组重复此过程,但这次插入的符号序列的起始符号,与上一轮符号序列的末尾符号相反。 重复以上步骤,直到数组只剩下一个数字。 展开全文