Loj 6485. LJJ 学二项式定理

题目描述

LJJ 学完了二项式定理,发现这太简单了,于是他将二项式定理等号右边的式子修改了一下,代入了一定的值,并算出了答案。

但人口算毕竟会失误,他请来了你,让你求出这个答案来验证一下。

一共有 $ T $ 组数据,每组数据如下:

输入以下变量的值:$ n, s , a_0 , a_1 , a_2 , a_3$,求以下式子的值:
\[\Large \left[ \sum_{i=0}^n \left( {n\choose i} \cdot s^{i} \cdot a_{i\bmod 4} \right) \right] \bmod 998244353 \]

其中 $ n\choose i $ 表示 $ \frac{n!}{i!(n-i)!} $。

输入格式

第一行一个整数 \(T\),之后 \(T\) 行,一行六个整数 \(n, s, a_0, a_1, a_2, a_3\)。

输出格式

一共 \(T\) 行,每行一个整数表示答案。

样例

样例输入

6
1 2 3 4 5 6
2 3 4 5 6 1
3 4 5 6 1 2
4 5 6 1 2 3
5 6 1 2 3 4
6 1 2 3 4 5

样例输出

11
88
253
5576
31813
232
数据范围与提示

对于 $ 50% $ 的数据,$ T \times n \leq 10^5 $;

对于 $ 100% $ 的数据,$ 1 \leq T \leq 10^5, 1 \leq n \leq 10 ^ {18}, 1 \leq s, a_0, a_1, a_2, a_3 \leq 10^{8} $。

\(\\\)

前置知识:单位根反演

我们考虑对每个\(d=0...3\)计算
\[ Ans_d=\left[ \sum_{i=0}^n[i\%4==d] \left( {n\choose i} \cdot s^{i} \cdot a_d \right) \right] \bmod 998244353 \]
答案就是
\[ Ans=\sum_{d=0}^3Ans_d \]

我们交换一下求和顺序:
\[ \begin{align} Ans_d=a_d\sum_{i=0}^n\binom{n}{i}s^i[i\%4==d]\\ =a_d\sum_{i=0}^n\binom{n}{i}s^i[4|(i-d)]\\ \end{align} \]
直接套单位根反演的套路:
\[ [k|n]=\sum_{i=0}^{k-1}(\omega_k^n)^i\\ \Longrightarrow [4|(i-d)]=\frac{1}{4}\sum_{j=0}^3 (\omega_4^{i-d})^j \]
再带回去:
\[ \begin{align} Ans_d&=a_d\sum_{i=0}^n\binom{n}{i}s^i[4|(i-d)]\\ &=a_d\sum_{i=0}^n\binom{n}{i}s^i\frac{1}{4}\sum_{j=0}^3(\omega _4^{i-d})^j\\ \end{align} \]
这里\(i\)直接从\(0\)开始枚举是没有问题的,因为即使\(i-d\)为负一样满足等比数列求和。

在根据套路交换求和符号:
\[ \begin{align} Ans_d&=a_d\frac{1}{4}\sum_{j=0}^3\sum_{i=0}^n\binom{n}{i}s^i(\omega _4^{ij-dj})\\ &=a_d\frac{1}{4}\sum_{j=0}^3\frac{1}{\omega_4 ^{dj}} \sum_{i=0}^n\binom{n}{i}s^i(\omega _4^{j})^i\\ \end{align} \]
我们设:
\[ f_n(x)=\sum_{i=0}^n\binom{n}{i}s^ix^i\\ =(sx+1)^n \]
则:
\[ \begin{align} Ans_d&=a_d\frac{1}{4}\sum_{j=0}^3\frac{1}{\omega_4 ^{dj}} \sum_{i=0}^n \binom{n}{i}s^i(\omega _4^{j})^i\\ &=a_d\frac{1}{4}\sum_{j=0}^3\frac{1}{\omega_4 ^{dj}} f(\omega_4^j)\\ &=a_d\frac{1}{4}\sum_{j=0}^3\frac{1}{\omega_4 ^{dj}} (s\cdot\omega_4^j+1)^n\\ \end{align} \]
模质数\(p\)意义下\(\omega_4^1\)可以取\(g^{\frac{p-1}{4}}\)其中\(g\)是原根。

代码:

#include<bits/stdc++.h>
#define ll long longusing namespace std;
inline ll Get() {ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9') {if(ch=='-') f=-1;ch=getchar();}while('0'<=ch&&ch<='9') {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}return x*f;}const ll mod=998244353,g=3;
ll ksm(ll t,ll x) {ll ans=1;for(;x;x>>=1,t=t*t%mod)if(x&1) ans=ans*t%mod;return ans;
}ll n,s,a[4];
ll w;
const ll inv4=ksm(4,mod-2);
int main() {w=ksm(g,(mod-1)>>2);int T=Get();while(T--) {n=Get(),s=Get();for(int i=0;i<4;i++) a[i]=Get();ll ans=0;for(int d=0;d<4;d++) {ll now=0;for(int j=0;j<4;j++) {(now+=ksm(ksm(w,d*j),mod-2)*ksm((s*ksm(w,j)+1)%mod,n))%=mod;}(ans+=now*a[d])%=mod;}cout<<ans*inv4%mod<<"\n";}return 0;
}

转载于:https://www.cnblogs.com/hchhch233/p/10696832.html

Loj 6485. LJJ 学二项式定理相关推荐

  1. Loj#6485. LJJ 学二项式定理

    Loj#6485. LJJ 学二项式定理(单位根反演) 题目描述 题目描述 题意:求下面式子的答案QAQ. [∑((ni)⋅si⋅aimod4)]mod998244353[\sum(\tbinom{n ...

  2. [LOJ 6485]LJJ 学二项式定理

    [LOJ 6485] LJJ 学二项式定理 题意 给定 \(n,s,a_0,a_1,a_2,a_3\), 求: \[ \Large \left[ \sum_{i=0}^n \left( {n\choo ...

  3. LOJ 6485 LJJ学多项式

    前言 蒟蒻代码惨遭卡常,根本跑不过 前置芝士--单位根反演 单位根有这样的性质: \[ \frac{1}{n}\sum_{i=0}^{n-1}\omega_{n}^{ki}=\left[n|k\rig ...

  4. 【LOJ 6485】LJJ 学二项式定理(单位根反演)(模板)

    LJJ 学二项式定理 题目链接:LOJ 6485 题目大意 求一个式子: ∑ i = 0 n ( ( n i ) s i a i m o d 4 ) \sum\limits_{i=0}^n(\bino ...

  5. LJJ 学二项式定理

    题目: https://loj.ac/problem/6485 给定n,s,a0,a1,a2,a3n,s,a_0,a_1,a_2,a_3n,s,a0​,a1​,a2​,a3​,求 [∑i=0n(ni) ...

  6. 单位根反演[loj6485]LJJ 学二项式定理

    前言 之前写反演的博客对于单位根反演只提了FFT 这里补一下一个应用 单位根反演 fi=∑j=0n−1ωni∗jgj⇔gi=∑j=0n−1ωn−i∗jnfjf_i=\sum_{j=0}^{n-1}\o ...

  7. GOOD BYE OI

    大米饼正式退役了,OI给我带来很多东西 我会的数学知识基本都在下面了 博客园的评论区问题如果我看到了应该是会尽力回答的... 这也是我作为一个OIer最后一次讲课的讲稿 20190731 多项式乘法 ...

  8. 对于容斥原理反演的思考和总结

    前言 我还是太菜了 容斥之类的方法并不能熟练应用 于是这次我就认真学习了一下容斥 你可能会发现,容斥与反演很多时候都会同时出现 那么,这两个东西分别是什么.究竟有什么关系呢? 容斥 我们先从定义说起 ...

  9. [学习笔记] 单位根反演

    单位根反演 [k∣n]=1k∑i=0k−1ωkin[k\mid n]=\frac 1k\sum_{i=0}^{k-1}\omega_k^{in}[k∣n]=k1​∑i=0k−1​ωkin​ kkk 次 ...

最新文章

  1. 在Windows和Linux上编译gRPC源码操作步骤(C++)
  2. 新浪微博应用 IE下面框架嵌套框架的问题解决
  3. 张俊林:BERT和Transformer到底学到了什么 | AI ProCon 2019
  4. fs:[124]对应CurrentThread
  5. erlang精要(13)-基本语法(1)
  6. python argparse type_python argparse(参数解析模块)
  7. readlink(/proc/self/exe, buf, count - 1);
  8. 深度学习术语_您应该意识到这些(通用)深度学习术语和术语
  9. android webview fragment,android studio中Fragment使用webview返回上一頁的問題
  10. 2020国货彩妆市场研究报告
  11. 【Python3网络爬虫开发实战】 3.1.3-解析链接
  12. python3.3 urllib.error.HTTPError: HTTP Error 403: Forbidden
  13. SDN第四次上机作业
  14. 电子申请客户端(EAC)在64位系统上的兼容性问题
  15. 浅谈JavaScript面向对象编程(转自酷勤网)
  16. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数001·3D函数
  17. 一加5应用未安装怎么解决_如何解决一加手机x安装不了软件下载的问题?
  18. consul报错:consul at least one health check on one instance is failing
  19. C语言编程>第十六周 ⑧ S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度。请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中
  20. JavaScript高级编程设计(第三版)——第三章:基本概念

热门文章

  1. python字符串find函数-Python内置的字符串处理函数整理
  2. python装饰器-python装饰器简介---这一篇也许就够了(推荐)
  3. python提高办公效率-提升Python程序运行效率的6个方法
  4. java和python的比较-Python和Java就业前景对比
  5. 以下哪个不是python中的关键字-以下哪个选项不是Python语言的保留字
  6. python九九乘法口诀表-Python 九九乘法表
  7. python 调用linux命令-Python 执行Linux系统命令的N种方法
  8. python编码规范手册-python编码规范
  9. python小学生教材-python纳入小学生教材,以后该如何辅导娃的作业?
  10. python爬虫工程师-Python-爬虫工程师-面试总结