Karen and Test
原题:Karen and Test
原题大意n个正整数排成一行,每相邻两个数进行加或减操作:第一第二个数相加,第二第三个数相减,第三第四个数相加,第四第五个数相减……,得到的结果排成第二行,然后继续这样的操作,并且初始的前两个数是加还是减,与上一行最后两个数的操作符相反,问最后得到的结果是多少?
算法分析考虑最简版本每个ai对最终式子的贡献,可以令ai的系数为1,其余为0,类似0,0,0…1…0,0,0,同时暂且不考虑减法,可以得出每个ai的贡献为C(n-1,k-1) ,然后通过下面这个过程,可以看出最终的式子,是两个奇偶序列和(最简版本),相加或做差得到的,n mod 4 = 2时相加,n mod 4 = 0时做差。(如果n是奇数,那么先暴力进行第一次变换使得n成为偶数)
程序代码#include <bits/stdc++.h>
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef long long ll;
const ll mod = 1e9+7;
const ll maxn = 200
...