首页 > 试题广场 >

交替加减

[编程题]交替加减
  • 热度指数: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

说明

~~~~~~该样例已在题面中说明,注意,负数也需要取模。

这道题你会答吗?花几分钟告诉大家答案吧!