正题

题目链接:http://poj.org/problem?id=3734


题目大意

用思种颜色给\(n\)个格子染色,要求前两种颜色出现偶数次,求方案。

\(1\leq T\leq 100,1\leq n\leq 10^9\)


解题思路

反正是\(\text{EGF}\)的十分入门题了。

首先是\(\sum_{i=0}^{\infty}\frac{x^i}{i!}=e^x\)。

这题带标号计数所以求的是

\[(\sum_{i=0}^\infty\frac{x^{2i}}{2i!})^2\times (\sum_{i=0}^\infty\frac{x^i}{i!})^2
\]

嗯,后面那个就是\(e^x\),前面那个怎么搞。

考虑点花里胡哨的东西,\(e^{-x}=\sum_{i=0}^\infty (-1)^i\frac{x^i}{i!}\),然后我们就有

\[\sum_{i=0}^\infty\frac{x^{2i}}{2i!}=\frac{e+e^{-x}}{2}
\]

然后带进式子就是

\[(\frac{e^x+e^{-x}}{2})^2\times e^{2x}=\frac{e^{4x}+2e^{2x}+1}{4}
\]

然后\(e^{ax}=\sum_{i=0}^{\infty}a^i\frac{x^i}{i!}\),所以展开一下项就是

\[[x^n]=\frac{4^n+2^n\times 2}{4}=4^{n-1}+2^{n-1}
\]

时间复杂度\(O(T\log n)\)


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);
}
}

最新文章

  1. Hadoop集群搭建安装过程(三)(图文详解---尽情点击!!!)
  2. win下修改mysql默认的字符集以防止乱码出现
  3. [常见问题]在Linux下执行Redis命令不起作用.
  4. Spring MVC 相关资料整理
  5. JDBC-java访问数据库
  6. Spring集成memcached的详细介绍
  7. hbm.xml支持的类型
  8. 详解Android ActionBar之一:ActionBar概述与创建
  9. MapReduce Shuffle And Sort
  10. 配置Tomcat
  11. Shell 初步学习
  12. Shell命令-文件及目录操作之touch、tree
  13. 20155228 2017-5-10 课堂测试:MySort
  14. 大数据新手之路三:安装Kafka
  15. [LeetCode] 96. Unique Binary Search Trees(给定一个数字n,有多少个唯一二叉搜索树) ☆☆☆
  16. ASP.NET 日志组件Smart.LogNet.DLL 引用即可写入日志及读取日志
  17. 关联Left Outer Join的第一条记录
  18. ValueError: update only works with $ operators
  19. python的list()列表数据类型的方法详解
  20. [转]四种π型RC滤波电路

热门文章

  1. [转]用C++实现插件体系结构
  2. FileUtils常用方法 - commons-io常用工具类
  3. blog.mzywucai.club停站
  4. SpringCloud升级之路2020.0.x版-24.测试Spring Cloud LoadBalancer
  5. go协程调度
  6. Spring Cloud总结
  7. 六、Abp vNext 基础篇丨文章聚合功能上
  8. 学习小计: Kaggle Learn Embeddings
  9. Linux centos7 复制,移动,删除文件或文件夹
  10. Mybatis(四)——