题目描述:

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

loj6485 LJJ 学二项式定理的更多相关文章

  1. LOJ6485 LJJ 学二项式定理 解题报告

    LJJ 学二项式定理 题意 \(T\)组数据,每组给定\(n,s,a_0,a_1,a_2,a_3\),求 \[ \sum_{i=0}^n \binom{n}{i}s^ia_{i\bmod 4} \] ...

  2. 【LOJ#6485】LJJ 学二项式定理(单位根反演)

    [LOJ#6485]LJJ 学二项式定理(单位根反演) 题面 LOJ 题解 显然对于\(a0,a1,a2,a3\)分开算答案. 这里以\(a0\)为例 \[\begin{aligned} Ans&am ...

  3. loj #6485. LJJ 学二项式定理 (模板qwq)

    $ \color{#0066ff}{ 题目描述 }$ LJJ 学完了二项式定理,发现这太简单了,于是他将二项式定理等号右边的式子修改了一下,代入了一定的值,并算出了答案. 但人口算毕竟会失误,他请来了 ...

  4. 题解 LOJ-6485 【LJJ学二项式定理】

    题目 由于看到正解的单位根反演过于复杂 (也就是看不懂) 所以自己构造了一个算法,理论上这个算法应该还有成长的空间(可以变得普适性更强) 不知道和单位根反演有没有一样,就发表出来了 反正转载前记得要联 ...

  5. loj 6485 LJJ学二项式定理 —— 单位根反演

    题目:https://loj.ac/problem/6485 先把 \( a_{i mod 4} \) 处理掉,其实就是 \( \sum\limits_{i=0}^{3} a_{i} \sum\lim ...

  6. LOJ #6485 LJJ 学二项式定理

    QwQ LOJ #6485 题意 求题面中那个算式 题解 墙上暴利 设$ f(x)=(sx+1)^n$ 假设求出了生成函数$ f$的各项系数显然可以算出答案 因为模$ 4$的缘故只要对于每个余数算出次 ...

  7. LOJ 6485 LJJ 学二项式定理——单位根反演

    题目:https://loj.ac/problem/6485 \( \sum\limits_{k=0}^{3}\sum\limits_{i=0}^{n}C_{n}^{i}s^{i}a_{k}[4|(i ...

  8. loj#6485. LJJ 学二项式定理(单位根反演)

    题面 传送门 题解 首先你要知道一个叫做单位根反演的东西 \[{1\over k}\sum_{i=0}^{k-1}\omega^{in}_k=[k|n]\] 直接用等比数列求和就可以证明了 而且在模\ ...

  9. loj #6485. LJJ 学二项式定理 单位根反演

    新学的黑科技,感觉好nb ~ #include <bits/stdc++.h> #define ll long long #define setIO(s) freopen(s". ...

随机推荐

  1. python 之 函数 面向过程 三元表达式 函数递归

    5.11 面向过程编程思想 核心是'过程'二字,过程即解决问题的步骤,即先干什么,再干什么........ 基于面向过程编写程序就好比在设计一条流水线,是一种机械式的思维方式. 总结优缺点: 优点:复 ...

  2. JSONPath中的表达式

    在JsonPath中使用表达式是一个非常好的功能,可以使用简洁和复杂的JsonPath.JsonPath中的表达式基本上是评估为布尔值的代码片段.基于结果,仅选择满足标准的节点.让我们看一下它的更多内 ...

  3. <pre></pre>标签自动换行

    原文地址:https://www.cnblogs.com/qq78292959/p/4193142.html   pre { white-space: pre-wrap; word-wrap: bre ...

  4. docker jetty启动时报错 failed setting default capabilities.

    docker 容器中jetty启动fail ,查看/var/log/jetty中的日志发现具体错误信息如下: failed setting default capabilities.set_caps( ...

  5. 牛客网Java刷题知识点之什么是异常、异常处理的原理是什么、为什么要使用异常、异常体系、运行时异常、普通异常、自定义异常、异常链

    不多说,直接上干货! 在这个世界不可能存在完美的东西,不管完美的思维有多么缜密,细心,我们都不可能考虑所有的因素,这就是所谓的智者千虑必有一失.同样的道理,计算机的世界也是不完美的,异常情况随时都会发 ...

  6. NIO基础之Buffer

    java.io 核心概念是流,即面向流的编程,在java中一个流只能是输入流或者输出流,不能同时具有两个概念. java.nio核心是 selector.Channel.Buffer ,是面向缓冲区( ...

  7. spring事务的开启方式(编程式和声明式)

    1.编程式事务:编码方式实现事务管理(代码演示为JDBC事务管理) Spring实现编程式事务,依赖于2大类,分别是上篇文章提到的PlatformTransactionManager,与模版类Tran ...

  8. 解决easyUI下拉控件无法触发onkeydown事件

    实现在combotree下拉控件中按Backspace键清除combotree选中的值 下面的代码无法获取到键盘事件 <input class="easyui-combotree&qu ...

  9. 【虚拟机-网络IP】虚拟机配置静态 IP 以后无法连接的解决办法

    问题描述 将虚拟机内部 IP 地址从动态获取改成静态 IP 以后,远程连接失败. 问题分析 Azure 虚拟机的内部 IP 默认为动态分配, 由 DHCP 服务自动分配, 在虚拟机的生命周期内, 该 ...

  10. web端 repeat和简单控件

    <%@ %> - 这里面写一些声明和引用的<% %> - 编写C#代码的<%= %><%# %> Repeater - 重复器     相当于winfo ...