[LOJ 6485]LJJ学二项式定理(单位根反演)
也许更好的阅读体验
\(\mathcal{Description}\)
\(T\)组询问,每次给\(n,s,a_0,a_1,a_2,a_3\)求
\(\begin{aligned}\left(\sum ^{n}_{i=0}\begin{pmatrix} n \\ i \end{pmatrix}\cdot s^{i}\cdot a_{i\ mod\ 4}\right)mod\ 998244353\end{aligned}\)
\(\mathcal{Solution}\)
这道题要用单位根反演
\(\begin{aligned}\left[ n\ |\ k\right] =\dfrac {1}{n}\sum ^{n-1}_{i=0}w^{ik}_{n}\end{aligned}\)
我们先打表,或者查表找出在模\(998244353\)下的原根\(\omega_4^0\)并处理好\(\omega_4^1,\omega_4^2,\omega_4^3\)
考虑对每个\(a_i\)单独计算其答案
以\(a_0\)为例
\(\begin{aligned}
ans_{a_0}&=\frac{1}{4}a_0\sum_{i=0}^n [4\ |\ i]{n\choose i}s^i\\
&=\frac{1}{4}a_0\sum_{i=0}^n{n\choose i}s^i\sum_{j=0}^3 (\omega_4^{j})^i\\
&=\frac{1}{4}a_0\sum_{j=0}^3\sum_{i=0}^n {n\choose i}s^i(\omega_4^j)^i\\
&=\frac{1}{4}a_0\sum_{j=0}^3(s\omega_4^j+1)^n
\end{aligned}\)
对于其他\(a_i\),我们可以将其写成\([4\ |\ i+4-k]\)的形式,并提一个\(\omega^x\)出来
下面完整的推一遍
\(\begin{aligned}ans&=\sum ^{3}_{k=0}a_{k}\sum ^{n}_{i=0}\left[ 4\ |\ i+4-k\right] s^{i}\cdot \begin{pmatrix} n \\ i \end{pmatrix}\\
&=\sum ^{3}_{k=0}\dfrac {1}{4}a_{k}\sum ^{n}_{i=0}\sum ^{3}_{j=0}\omega^{j\cdot\left( i+4-k\right) }_{4}\cdot s^{i}\cdot \begin{pmatrix} n \\ i \end{pmatrix}\\
&=\sum ^{3}_{k=0}\dfrac {1}{4}a_{k}\sum ^{n}_{i=0}\sum ^{3}_{j=0}\omega^{\left(4j-jk\right) }_{4}\cdot \omega^{j^i}_4\cdot s^{i}\cdot \begin{pmatrix} n \\ i \end{pmatrix}\\
&=\sum ^{3}_{k=0}\dfrac {1}{4}a_{k}\sum ^{3}_{j=0}\omega^{\left(4j-jk\right) }_{4}\sum ^{n}_{i=0} \omega^{j^i}\cdot s^{i}\cdot \begin{pmatrix} n \\ i \end{pmatrix}\\
&=\sum ^{3}_{k=0}\dfrac {1}{4}a_{k}\sum ^{3}_{j=0}\omega^{\left(4j-jk\right) }_{4}\left(s\cdot \omega^j_4+1\right)^n \\
\end{aligned}\)
拿出来,再写一遍
\(\begin{aligned}ans=\sum ^{3}_{i=0}\dfrac {1}{4}a_{i}\sum ^{3}_{j=0}\omega^{\left(4j-ij\right) }_{4}\left(s\cdot \omega^j_4+1\right)^n \\
\end{aligned}\)
\(\mathcal{Code}\)
#include <cstdio>
#define ll long long
using namespace std;
const int mod = 998244353;
const int w [] = {1,911660635,998244352,86583718};
ll T,n,s,ans,res,inv;
ll a[4];
ll ksm (ll a,ll b)
{
	a%=mod;
	ll s=1;
	for (;b;b>>=1,a=a*a%mod)
		if (b&1)	s=s*a%mod;
	return s;
}
int main ()
{
	scanf("%lld",&T);
	inv=ksm(4,mod-2);
	while (T--){
		scanf("%lld%lld%lld%lld%lld%lld",&n,&s,&a[0],&a[1],&a[2],&a[3]);
		ans=0;
		for (int i=0;i<=3;++i){
			res=0;
			for (int j=0;j<=3;++j)
				res=(res+w[(4*j-i*j)%4]*ksm(s*w[j]+1,n)%mod)%mod;
			ans=(ans+a[i]*res%mod)%mod;
		}
		printf("%lld\n",ans*inv%mod);
	}
	return 0;
}
如有哪里讲得不是很明白或是有错误,欢迎指正
如您喜欢的话不妨点个赞收藏一下吧
[LOJ 6485]LJJ学二项式定理(单位根反演)的更多相关文章
- loj 6485 LJJ学二项式定理 —— 单位根反演
		题目:https://loj.ac/problem/6485 先把 \( a_{i mod 4} \) 处理掉,其实就是 \( \sum\limits_{i=0}^{3} a_{i} \sum\lim ... 
- 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 ... 
- loj #6485. LJJ 学二项式定理 单位根反演
		新学的黑科技,感觉好nb ~ #include <bits/stdc++.h> #define ll long long #define setIO(s) freopen(s". ... 
- loj#6485. LJJ 学二项式定理(单位根反演)
		题面 传送门 题解 首先你要知道一个叫做单位根反演的东西 \[{1\over k}\sum_{i=0}^{k-1}\omega^{in}_k=[k|n]\] 直接用等比数列求和就可以证明了 而且在模\ ... 
- LOJ #6485 LJJ 学二项式定理
		QwQ LOJ #6485 题意 求题面中那个算式 题解 墙上暴利 设$ f(x)=(sx+1)^n$ 假设求出了生成函数$ f$的各项系数显然可以算出答案 因为模$ 4$的缘故只要对于每个余数算出次 ... 
- loj #6485. LJJ 学二项式定理  (模板qwq)
		$ \color{#0066ff}{ 题目描述 }$ LJJ 学完了二项式定理,发现这太简单了,于是他将二项式定理等号右边的式子修改了一下,代入了一定的值,并算出了答案. 但人口算毕竟会失误,他请来了 ... 
- LOJ 6485 LJJ学多项式
		前言 蒟蒻代码惨遭卡常,根本跑不过 前置芝士--单位根反演 单位根有这样的性质: \[ \frac{1}{n}\sum_{i=0}^{n-1}\omega_{n}^{ki}=\left[n|k\rig ... 
- 【LOJ#6485】LJJ 学二项式定理(单位根反演)
		[LOJ#6485]LJJ 学二项式定理(单位根反演) 题面 LOJ 题解 显然对于\(a0,a1,a2,a3\)分开算答案. 这里以\(a0\)为例 \[\begin{aligned} Ans&am ... 
- 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} \] ... 
随机推荐
- 谈谈你对This对象的理解?
			1.this总是指向函数的直接调用者(而非间接调用者):2.如果有new关键字,this指向new出来的那个对象:3.在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent ... 
- Navicat Premium连接MySQL 1251错误和Mysql初始化root密码和允许远程访问
			Mysql初始化root密码和允许远程访问 在我们使用mysql数据库时,有时我们的程序与数据库不在同一机器上,这时我们需要远程访问数据库.缺省状态下,mysql的用户是没有远程访问的权限. 下面介绍 ... 
- Nfs固定端口 nfs 端口公网映射
- C++模板编程中只特化模板类的一个成员函数(花样特化一个成员函数)
			转自:https://www.cnblogs.com/zhoug2020/p/6581477.html 模板编程中如果要特化或偏特化(局部特化)一个类模板,需要特化该类模板的所有成员函数.类模板中大多 ... 
- Windows7 64位配置ODBC数据源(Sybase)的方法
			Windows7 64位配置ODBC数据源(Sybase)的方法 操作步骤: 1,通过“控制面板->ODBC(32位)”进入ODBC数据源管理器,如下图: 假如没找到“ODBC(32位)”,则可 ... 
- 【MySQL】Mac通过brew安装的MySQL重启方法
			问题 在 Mac 上通过 brew install mysql 安装的的MySQL使用基本MySQL命令重启会失败: mysql.server stop mysql.server start mysq ... 
- Java基础 println print 实现输出换行
			JDK :OpenJDK-11 OS :CentOS 7.6.1810 IDE :Eclipse 2019‑03 typesetting :Markdown code ... 
- c#反射动态创建窗体
			根据窗体的名称动态创建窗体 Assembly assembly = Assembly.GetExecutingAssembly(); // 实例化窗体 try { Form f ... 
- Python3基础 运算 加减乘除、取余数
			Python : 3.7.3 OS : Ubuntu 18.04.2 LTS IDE : pycharm-community-2019.1.3 ... 
- 【Mac】解决macos安装升级时报错安装所选更新时发生错误的问题
			1 系统更新macjave 更新一直失败: 2 解决方法为:重新启动Mac,并按住Command+R进入恢复模式,找到Terminal后输入csrutil disable,然后重启Mac,再次下载并 ... 
