题目描述:

loj

题解:

单位根反演。

$[n|x]=\frac{1}{n} \sum _{i=0}^{n-1} (ω_n^x)^i$

证明?显然啊,要么停在$(1,0)$要么转一圈。

所以说题目要求的是$\sum _{i=0}^{n} C(n,i) * s^i * a_{i\;mod\;4}$

把$a$提前,变成$\sum_{k=0}^{3}a_k \sum _{i=0} ^{n} C(n,i) *s^i [4|i-k]$

然后把上面单位根反演式子套进去。后面变成$\sum _{i=0} ^n C(n,i) * s^i * \frac{1}{4} \sum _{j=0} ^{3} (ω_4 ^{i-1})^j$

把后面提前面:$\frac{1}{4} \sum_{j=0}^3 ω_4^{-j} \sum_{i=0}^{n} C(n,i)*s^i*ω_4^{ij}$

发现二项式定理:$\frac{1}{4} \sum_{j=0}^3 ω_4^{-j} * (sω_4^j+1)^n$

最后就剩快速幂了?

代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int MOD = ;
template<typename T>
inline void read(T&x)
{
T f = ,c = ;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){c=c*+ch-'';ch=getchar();}
x = f*c;
}
ll fastpow(ll x,ll y)
{
ll ret = ;
while(y)
{
if(y&)ret=ret*x%MOD;
x=x*x%MOD;y>>=;
}
return ret;
}
int T;
ll n,s,a0,a1,a2,a3,w0,w1,w2,w3,W0,W1,W2,W3,ans,inv;
void work()
{
read(n),read(s),read(a0),read(a1),read(a2),read(a3);n%=(MOD-),ans=;
W0 = fastpow(s*w0%MOD+,n),W1 = fastpow(s*w1%MOD+,n);
W2 = fastpow(s*w2%MOD+,n),W3 = fastpow(s*w3%MOD+,n);
ans=(ans+a0*(w0*W0%MOD+w0*W1%MOD+w0*W2%MOD+w0*W3%MOD)%MOD)%MOD;
ans=(ans+a1*(w0*W0%MOD+w3*W1%MOD+w2*W2%MOD+w1*W3%MOD)%MOD)%MOD;
ans=(ans+a2*(w0*W0%MOD+w2*W1%MOD+w0*W2%MOD+w2*W3%MOD)%MOD)%MOD;
ans=(ans+a3*(w0*W0%MOD+w1*W1%MOD+w2*W2%MOD+w3*W3%MOD)%MOD)%MOD;
printf("%lld\n",ans*inv%MOD);
}
int main()
{
// freopen("tt.in","r",stdin);
read(T);inv = fastpow(,MOD-);
w0=,w1=fastpow(,(MOD-)/),w2=w1*w1%MOD,w3=w1*w2%MOD;
while(T--)work();
return ;
}

最新文章

  1. Spring Boot 添加Shiro支持
  2. LeetCode House Robber III
  3. 1.5 Eclipse集成开发环境
  4. nand以及yaffs2
  5. 人机接口设备攻击(HID Attack)
  6. 事务的ACID特性
  7. 复制选中的listbox内容
  8. 7 linux服务器程序规范
  9. 鼠标滚轮(mousewheel)和DOMMouseScroll事件
  10. Java用Dijkstra算法实现地图两点的最短路径查询(Android版)
  11. github和本地仓库关联
  12. BZOJ3676: [Apio2014]回文串(回文树)
  13. CentOS随笔——克隆虚拟机
  14. @Scheduler与cron
  15. jquery Ajax noConflict()
  16. JavaScript练习 - 模态对话框
  17. Java:将数据库数据导出到Excel (一眼就看会)
  18. 老板说你的UI设计的不高级?你肯定没用这7个技巧...
  19. ILMerge-GUI的使用
  20. Makefile初探

热门文章

  1. 笔记-JavaWeb学习之旅19
  2. acwing 3 完全背包
  3. ElasticStack之Logstash安装
  4. JQuery序列化表单serialize() 以及 serializeArray()
  5. applicationContext中普通数据源不用jndi数据源
  6. Consul实现服务治理1
  7. linux替换文件中的某个字符串的命令sed
  8. Java ActiveMQ 示例
  9. 关于ev||event事件对象的兼容写法
  10. HDU 3709 Balanced Number (数位DP)