Solution -「LOJ #6485」 LJJ 学二项式定理
\(\mathcal{Description}\)
Link.
给定 \(n,s,a_0,a_1,a_2,a_3\),求:
\]
多测,数据组数 \(\le10^5\),\(n\le10^{18}\),其余输入 \(\le10^8\)。
\(\mathcal{Solution}\)
单位根反演板题。记一个函数 \(f\) 有:
f(x)&=\sum_{i=0}^n\binom{n}is^ix^i\\
&=(sx+1)^n
\end{aligned}
\]
问题即求 \(i\bmod4=0,1,2,3\) 时 \(a_i\) 倍 \([x^i]f(x)\) 之和。以 \(i\bmod4=0\) 为例:
\sum_{i=0}^n[4|i]a_0[x^i]f(x)&=\frac{1}4a_0\sum_{i=0}^n\left(\sum_{j=0}^3\omega_4^{ij}\right)\binom{n}is^i\\
&=\frac{1}4a_0\sum_{j=0}^3f(\omega_4^j)
\end{aligned}
\]
直接代四个单位根进去算出来即可。对于其他三个 \(i\bmod4\) 的值,将 \(f\) 的各系数位移就能类似地求出答案。
复杂度 \(\mathcal O(T\log n)\)(\(\times4^2\) 的常数)。
\(\mathcal{Code}\)
/* Clearink */
#include <cstdio>
#define rep( i, l, r ) for ( int i = l, repEnd##i = r; i <= repEnd##i; ++i )
#define per( i, r, l ) for ( int i = r, repEnd##i = l; i >= repEnd##i; --i )
typedef long long LL;
inline LL rint () {
LL x = 0, f = 1; char s = getchar ();
for ( ; s < '0' || '9' < s; s = getchar () ) f = s == '-' ? -f : f;
for ( ; '0' <= s && s <= '9'; s = getchar () ) x = x * 10 + ( s ^ '0' );
return x * f;
}
template<typename Tp>
inline void wint ( Tp x ) {
if ( x < 0 ) putchar ( '-' ), x = -x;
if ( 9 < x ) wint ( x / 10 );
putchar ( x % 10 ^ '0' );
}
const int MOD = 998244353, G = 3, INV4 = 748683265;
LL n;
int w[4], s, a[4];
inline int mul ( const long long a, const int b ) { return a * b % MOD; }
inline int add ( int a, const int b ) { return ( a += b ) < MOD ? a : a - MOD; }
inline int mpow ( int a, int b ) {
int ret = 1;
for ( ; b; a = mul ( a, a ), b >>= 1 ) ret = mul ( ret, b & 1 ? a : 1 );
return ret;
}
inline int f ( const int x ) {
return mpow ( add ( mul ( s, x ), 1 ), n );
}
int main () {
w[0] = 1, w[1] = mpow ( G, MOD - 1 >> 2 );
w[2] = mul ( w[1], w[1] ), w[3] = mul ( w[2], w[1] );
for ( int T = rint (); T--; ) {
n = rint () % ( MOD - 1 ), s = rint ();
rep ( i, 0, 3 ) a[i] = rint ();
int ans = 0;
rep ( r, 0, 3 ) {
int res = 0;
rep ( i, 0, 3 ) {
res = add ( res,
mul ( f ( w[i] ), mpow ( w[r * i & 3], MOD - 2 ) ) );
}
ans = add ( ans, mul ( res, a[r] ) );
}
wint ( mul ( ans, INV4 ) ), putchar ( '\n' );
}
return 0;
}
Solution -「LOJ #6485」 LJJ 学二项式定理的更多相关文章
- 【LOJ#6485】LJJ 学二项式定理(单位根反演)
[LOJ#6485]LJJ 学二项式定理(单位根反演) 题面 LOJ 题解 显然对于\(a0,a1,a2,a3\)分开算答案. 这里以\(a0\)为例 \[\begin{aligned} Ans&am ...
- Solution -「LOJ #6029」「雅礼集训 2017」市场
\(\mathcal{Description}\) Link. 维护序列 \(\lang a_n\rang\),支持 \(q\) 次如下操作: 区间加法: 区间下取整除法: 区间求最小值: 区 ...
- Solution -「LOJ #138」「模板」类欧几里得算法
\(\mathcal{Description}\) Link. \(T\) 组询问,每次给出 \(n,a,b,c,k_1,k_2\),求 \[\sum_{x=0}^nx^{k_1}\left\ ...
- Solution -「LOJ #141」回文子串 ||「模板」双向 PAM
\(\mathcal{Description}\) Link. 给定字符串 \(s\),处理 \(q\) 次操作: 在 \(s\) 前添加字符串: 在 \(s\) 后添加字符串: 求 \(s\ ...
- Solution -「LOJ #150」挑战多项式 ||「模板」多项式全家桶
\(\mathcal{Description}\) Link. 给定 \(n\) 次多项式 \(F(x)\),在模 \(998244353\) 意义下求 \[G(x)\equiv\left\{ ...
- Solution -「LOJ #6053」简单的函数
\(\mathcal{Description}\) Link. 积性函数 \(f\) 满足 \(f(p^c)=p\oplus c~(p\in\mathbb P,c\in\mathbb N_+) ...
- 「LOJ#10051」「一本通 2.3 例 3」Nikitosh 和异或(Trie
题目描述 原题来自:CODECHEF September Challenge 2015 REBXOR 1≤r1<l2≤r2≤N,x⨁yx\bigoplus yx⨁y 表示 ...
- 「LOJ#10056」「一本通 2.3 练习 5」The XOR-longest Path (Trie
#10056. 「一本通 2.3 练习 5」The XOR-longest Path 题目描述 原题来自:POJ 3764 给定一棵 nnn 个点的带权树,求树上最长的异或和路径. 输入格式 第一行一 ...
- 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} \] ...
随机推荐
- react中关于create-react-app2里css相关配置
先看 webpack.config.dev.js 里的相关代码: // style files regexes const cssRegex = /\.css$/; const cssModuleRe ...
- SYCOJ906瑞士轮
题目-瑞士轮 (shiyancang.cn) 模拟题 #include<bits/stdc++.h> using namespace std; const int N=1e5+520; i ...
- PaddleOCRSharp,2022年,你来的晚了些,一款.NET离线使用的高精度OCR
一款免费且离线的.NET使用的OCR,爱你又恨你!恨你来的太晚了. PaddleOCRSharp 本项目是一个基于百度飞桨的PaddleOCR的C++代码修改并封装的.NET的类库.包含文本识别.文本 ...
- Redis介绍一
一.五中数据类型 String: 字符串 Hash: 散列 List: 列表 Set: 集合 Sorted Set: 有序集合 Redis 发布订阅 Redis 发布订阅 (pub/sub) 是一种消 ...
- 园子的推广博文:欢迎收看 Apache Flink 技术峰会 FFA 2021 的视频回放
园子专属收看链接:https://developer.aliyun.com/special/ffa2021/live#?utm_content=g_1000316459 Flink Forward 是 ...
- Ubuntu 桌面版使用总结
最近拿出了大学时买的性(游)能(戏)本(机),其实从直观来看,硬件基础还是不错的,但是跑 WIN10, 清了各种广告,关了各种无效进城之后,用起来仍然还是很不爽.可能是已经用惯 mac 了吧,mac给 ...
- Solon 开发,一、注入或手动获取配置
Solon 开发 一.注入或手动获取配置 二.注入或手动获取Bean 三.构建一个Bean的三种方式 四.Bean 扫描的三种方式 五.切面与环绕拦截 六.提取Bean的函数进行定制开发 七.自定义注 ...
- python环境搭建以及jupyter notebook的安装和启动
一.Python 环境搭建 本章节我们将向大家介绍如何在本地搭建Python开发环境. Python可应用于多平台包括 Linux 和 Mac OS X. 你可以通过终端窗口输入 "pyth ...
- 如何在Xamarin中快速集成Android版认证服务-手机号码篇
Xamarin作为微软提供的移动服务多系统开发平台,成为很多开发者首选的应用开发平台.AppGallery Connect(以下简称AGC)也在逐步的支持Xamarin的SDK.认证服务也是支持Xam ...
- 在 K8S 中快速部署 Redis Cluster & Redisinsight
Redis Cluster 部署 使用 Bitnami helm chart 在 K8S redis 命名空间中一键部署 Redis cluster . helm repo add bitnami h ...