HDU 6061 RXD and functions(NTT)
RXD and functions
#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 10, mod = 998244353;int r[N];int quick_pow(int a, int n) {int ans = 1;while (n) {if (n & 1) {ans = 1ll * a * ans % mod;}a = 1ll * a * a % mod;n >>= 1;}return ans;
}void get_r(int lim) {for (int i = 0; i < lim; i++) {r[i] = (i & 1) * (lim >> 1) + (r[i >> 1] >> 1);}
}void NTT(int *f, int lim, int rev) {for (int i = 0; i < lim; i++) {if (i < r[i]) {swap(f[i], f[r[i]]);}}for (int mid = 1; mid < lim; mid <<= 1) {int wn = quick_pow(3, (mod - 1) / (mid << 1));for (int len = mid << 1, cur = 0; cur < lim; cur += len) {int w = 1;for (int k = 0; k < mid; k++, w = 1ll * w * wn % mod) {int x = f[cur + k], y = 1ll * w * f[cur + mid + k] % mod;f[cur + k] = (x + y) % mod, f[cur + mid + k] = (x - y + mod) % mod;}}}if (rev == -1) {int inv = quick_pow(lim, mod - 2);reverse(f + 1, f + lim);for (int i = 0; i < lim; i++) {f[i] = 1ll * f[i] * inv % mod;}}
}int a[N], c[N], A[N], B[N], fac[N], ifac[N], n, m, sum;void init() {fac[0] = 1;for (int i = 1; i < N; i++) {fac[i] = 1ll * fac[i - 1] * i % mod;}ifac[N - 1] = quick_pow(fac[N - 1], mod - 2);for (int i = N - 2; i >= 0; i--) {ifac[i] = 1ll * ifac[i + 1] * (i + 1) % mod;}
}int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);init();while (scanf("%d", &n) != EOF) {for (int i = 0; i <= n; i++) {scanf("%d", &c[i]);}scanf("%d", &m);sum = 0;for (int i = 1; i <= m; i++) {scanf("%d", &a[i]);sum = (sum + a[i]) % mod;}sum = (mod - sum) % mod;int cur = 1;for (int i = 0; i <= n; i++) {A[i] = 1ll * c[i] * fac[i] % mod;B[n - i] = 1ll * ifac[i] * cur % mod;cur = 1ll * cur * sum % mod;}int lim = 1;while (lim <= 2 * n) {lim <<= 1;}get_r(lim);NTT(A, lim, 1);NTT(B, lim, 1);for (int i = 0; i < lim; i++) {A[i] = 1ll * A[i] * B[i] % mod;}NTT(A, lim, -1);for (int i = 0; i <= n; i++) {printf("%lld ", 1ll * ifac[i] * A[n + i] % mod);}puts("");for (int i = 0; i < lim; i++) {A[i] = B[i] = 0;}}return 0;
}
HDU 6061 RXD and functions(NTT)相关推荐
- 【推导】【NTT】hdu6061 RXD and functions(NTT)
题意:给定一个n次多项式f(x)的各项系数,让你求f(x-Σai)的各项系数. http://blog.csdn.net/v5zsq/article/details/76780053 推导才是最关键的 ...
- 2017 多校3 hdu 6061 RXD and functions
2017 多校3 hdu 6061 RXD and functions(FFT) 题意: 给一个函数\(f(x)=\sum_{i=0}^{n}c_i \cdot x^{i}\) 求\(g(x) = f ...
- 【学习笔记】超简单的快速数论变换(NTT)(FFT的优化)(含全套证明)
整理的算法模板合集: ACM模板 目录 一.前置知识 二.快速数论变换(NTT) 三.NTT证明(和FFT的关系) 四.NTT模板 数组形式的实现 vector形式的实现 点我看多项式全家桶(●^◡_ ...
- HDU各种比赛题题解(一)
HDU各种比赛题题解(一) Gardon-DYGG Contest 1 HDU1178 Heritage from father[水题] - 海岛Blog - CSDN博客 HDU1181 变形课[D ...
- 【HDU 2612 Find a Way(BFS)】(兼BFS入门笔记)
[HDU 2612 Find a Way(BFS)](兼BFS入门笔记) 原题入口: http://acm.hdu.edu.cn/showproblem.php?pid=2612 第一篇在CSDN的博 ...
- 【luogu P3803】【模板】多项式乘法(NTT)
[模板]多项式乘法(NTT) 题目链接:luogu P3803 题目大意 给你两个多项式,要你求它们的卷积. 思路 这次我们写 NTT 的做法. 它的优点就是它可以取模,而且不会有精度问题,而且会比 ...
- 【HDU 3400】Line belt(三分法)
题目链接 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=3400 题意 有两条传送带AB和CD,移动速度分别为p,q. 除了传送带的其他区域移动速度为r ...
- 快速数论变换(NTT)
刚学完FFT,干脆把NTT也学了算了 (一)预备知识 关于原根,这里说得蛮详细的百度百科 为什么使用原根呢?为什么原根可以替代\(\omega_{n}\)呢?想知道为什么就看here NTT用到的各种 ...
- HDU 1222 Wolf and Rabbit(gcd)
HDU 1222 Wolf and Rabbit (最大公约数)解题报告 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...
最新文章
- dispatch callback ant design pro 网络请求回调函数
- 共识协议(3)比特币之POW
- 介绍一个非常实用的Visual Studio Code扩展 - indent-rainbow
- C++11中的std::function
- c语言插入特定的字符串,C语言实现:将一个字符串插入到另一个字符串的指定位置...
- 浙江大学计算机研究生分数线初试单科学科,计算机考研|这两所自划线,单科没过线也能复试?!...
- P5068 [Ynoi2015]我回来了
- 光轴会聚模型求解世界坐标点流程与公式理解
- java 参数值_Java中的参数传值方式
- C/C++ stack栈的理解以及使用
- android rom 属性 分辨率,ROM的 build.prop参数详解
- XML与Web Service基础知识点
- 项目管理工具maven
- 自定义Silverlight播放器
- 华为 静态路由与FTP备份
- flutter Android混淆
- 2.1 图像验证码(英文验证码、超级鹰)
- 晶振对微型计算机的作用,单片机中晶振电路的作用及其常见参数
- exlsx表格教程_e某cel表格~的各种基本操作.doc 文档全文预览
- python统计excel中重复数据_Python中用pandas对标Excel自带功能——去除重复项
热门文章
- 一维数组和二维数组的区别_数组指针和指针数组的区别
- win7升级win10正式版_win7告退在即,如何升级到win10?
- 值得收藏的Python小技巧:这17个骚操作你都OK吗?
- 如何解读决策树和随机森林的内部工作机制?
- ubuntu安装matlab2009,Ubuntu中安装Matlab2010a
- 多个goruntine 性能变慢_提高 JavaScript 性能的 12 个技巧
- mysql sleep详解_sql注入详解(二)
- 二维数组各行分别求和_【PyTorch入门】之十分钟看懂二维卷积层的运算、实现及应用...
- 计算机专业考研末流211和双非,211大学考985研究生难吗,如何看待本科985学生读研去211学校?...
- php 获取对象所有成员变量,PHP成员变量获取对比