loj 6485 LJJ学二项式定理 —— 单位根反演
题目:https://loj.ac/problem/6485
先把 \( a_{i mod 4} \) 处理掉,其实就是
\( \sum\limits_{i=0}^{3} a_{i} \sum\limits_{j=0}^{n} C_{n}^{j} * s^{j} * [4|(j-i)] \)
然后把 \( [4|(j-i)] \) 单位根反演,得到
\( \sum\limits_{i=0}^{3} a_{i} \sum\limits_{j=0}^{n} C_{n}^{j} * s^{j} * \frac{1}{4} \sum\limits_{k=0}^{3} w_{4}^{k(j-i)} \)
\( \frac{1}{4} \sum\limits_{i=0}^{3} a_{i} \sum\limits_{k=0}^{3} \sum\limits_{j=0}^{n} C_{n}^{j} * s^{j} * w_{4}^{k(j-i)} \)
这里 \( w_{4}^{0} = g^{\frac{mod-1}{4}} \),\( g \) 是 998244353 的原根;
然后为了有二项式定理的形式,构造 \( F(i,w_{4}^{-k}) = w_{4}^{-k(i-n)} ( w_{4}^{-k} + s)^{n} \)
于是 \( ans = \frac{1}{4} \sum\limits_{i=0}^{3} a_{i} \sum\limits_{k=0}^{3} F(i,w_{4}^{-k}) \)
代码如下:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
int const mod=,g=;
ll rd()
{
ll ret=,f=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=; ch=getchar();}
while(ch>=''&&ch<='')ret=ret*+ch-'',ch=getchar();
return f?ret:-ret;
}
ll pw(ll a,ll b)
{
a=(a%mod+mod)%mod; b=(b%(mod-)+(mod-))%(mod-);
ll ret=;
for(;b;b>>=,a=a*a%mod)if(b&)ret=ret*a%mod; return ret;
}
int upt(int x){while(x>=mod)x-=mod; while(x<)x+=mod; return x;}
int s,a[]; ll n;
int F(int i,int x)
{
int ret=upt(x+s); ret=pw(ret,n);
return (ll)ret*pw(x,i-n)%mod;
}
int main()
{
int T=rd();
while(T--)
{
n=rd(); s=rd(); for(int i=;i<;i++)a[i]=rd();
int w=pw(g,(mod-)/),inv=pw(w,mod-);
int ans=;
for(int i=;i<=;i++)
for(int k=,t=;k<=;k++,t=(ll)t*inv%mod)
ans=(ans+(ll)F(i,t)*a[i])%mod;
ans=(ll)ans*pw(,mod-)%mod;
printf("%d\n",upt(ans));
}
return ;
}
loj 6485 LJJ学二项式定理 —— 单位根反演的更多相关文章
- [LOJ 6485]LJJ学二项式定理(单位根反演)
也许更好的阅读体验 \(\mathcal{Description}\) 原题链接 \(T\)组询问,每次给\(n,s,a_0,a_1,a_2,a_3\)求 \(\begin{aligned}\left ...
- 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} \] ...
随机推荐
- Python编程-函数进阶
一.函数对象 函数是第一类对象,即函数可以当作数据传递 1 可以被引用 2 可以当作参数传递 3 返回值可以是函数 4 可以当作容器类型的元素 def foo(): print('from foo') ...
- INSPIRED启示录 读书笔记 - 第24章 平滑部署
避免更新产品导致用户反感 毫无征兆地更新不必要的版本会令用户产生反感.不是所有用户都喜欢新版本的产品.用户产生反感主要有几个原因 1.事前没有收到更新通知,用户觉得措手不及 2.用户没时间学习.适应新 ...
- How to Google
程序员的基础生存技能 -- 关于搜索引擎的小贴士 如果票选近二十年最伟大的发明,我相信搜索引擎肯定会占据一个不容小觑的位置,它不单是一项发明,更是一项成就,最大程度消灭了信息的不平等.既然人人都可以接 ...
- C++中容器的使用(二)
第一章容器 第1条:慎重选择容器类型. 标准STL序列容器:vector.string.deque和list. 标准STL关联容器:set.multiset.map和multimap. 非标准序列容器 ...
- H3C 交换机设置telnet WEB用户
huwei : local-user admin password cipher @#$@#$ service-type telnet ssh service-type telnet ssh leve ...
- struts2中常用配置
1.Post提交乱码问题,如果编码采用的是utf-8,那么默认不需要自己处理,因为其默认的常量配置文件就是处理UTF-8的 这个常量值只处理POST提交,get如果乱码还得自己写拦截器处理,一般只要页 ...
- Qt之密码框不可全选、复制、粘贴无右键菜单等
转载---> http://blog.sina.com.cn/s/blog_a6fb6cc90101artk.html 在做用户登录界面的时候,往往会用到密码框,则其中的一些功能也要求与普通的输 ...
- hdoj1005--Number Sequence
Problem Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1 ...
- EJS基本用法
1.引入 <script src="/src/ejs_production.js"></script> 2.模板 <script id="c ...
- <a>标签点击不跳转
HTML中的<a></a>标签点击不跳转的方法 一.<a href="####" ></a> 使用这个方法我们会发现<a hr ...