正题
题目链接:http://poj.org/problem?id=3734
题目大意
用思种颜色给nnn个格子染色,要求前两种颜色出现偶数次,求方案。
1≤T≤100,1≤n≤1091\leq T\leq 100,1\leq n\leq 10^91≤T≤100,1≤n≤109
解题思路
反正是EGF\text{EGF}EGF的十分入门题了。
首先是∑i=0∞xii!=ex\sum_{i=0}^{\infty}\frac{x^i}{i!}=e^x∑i=0∞i!xi=ex。
这题带标号计数所以求的是
(∑i=0∞x2i2i!)2×(∑i=0∞xii!)2(\sum_{i=0}^\infty\frac{x^{2i}}{2i!})^2\times (\sum_{i=0}^\infty\frac{x^i}{i!})^2(i=0∑∞2i!x2i)2×(i=0∑∞i!xi)2
嗯,后面那个就是exe^xex,前面那个怎么搞。
考虑点花里胡哨的东西,e−x=∑i=0∞(−1)ixii!e^{-x}=\sum_{i=0}^\infty (-1)^i\frac{x^i}{i!}e−x=∑i=0∞(−1)ii!xi,然后我们就有
∑i=0∞x2i2i!=e+e−x2\sum_{i=0}^\infty\frac{x^{2i}}{2i!}=\frac{e+e^{-x}}{2}i=0∑∞2i!x2i=2e+e−x
然后带进式子就是
(ex+e−x2)2×e2x=e4x+2e2x+14(\frac{e^x+e^{-x}}{2})^2\times e^{2x}=\frac{e^{4x}+2e^{2x}+1}{4}(2ex+e−x)2×e2x=4e4x+2e2x+1
然后eax=∑i=0∞aixii!e^{ax}=\sum_{i=0}^{\infty}a^i\frac{x^i}{i!}eax=∑i=0∞aii!xi,所以展开一下项就是
[xn]=4n+2n×24=4n−1+2n−1[x^n]=\frac{4^n+2^n\times 2}{4}=4^{n-1}+2^{n-1}[xn]=44n+2n×2=4n−1+2n−1
时间复杂度O(Tlogn)O(T\log n)O(Tlogn)
code
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int P=10007;
int n,T;
int power(int x,int b){int ans=1;while(b){if(b&1)ans=ans*x%P;x=x*x%P;b>>=1;}return ans;
}
int main()
{scanf("%d",&T);while(T--){scanf("%d",&n);n--;n%=(P-1);printf("%d\n",(power(2,n)+power(4,n))%P);}
}