/*hdu6061[NTT推公式] 2017多校3*/
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL MOD = ;
const int MAX_N = ;
int n, m, temp;
LL a;
LL inv[];
LL Finv[];
LL F[];
LL A[], B[], C[];
LL quickPow(LL x, LL n, LL MOD) {
LL ans = ;
for (; n; n >>= ) {
if (n & ) ans = (ans * x) % MOD;
x = (x * x) % MOD;
}
return ans;
} void inv_init() {
inv[] = ;
for (int i = ; i <= MAX_N; ++i) {
inv[i] = (MOD - MOD / i) * inv[MOD % i] % MOD;
}
F[] = Finv[] = ;
for (int i = ; i <= MAX_N; ++i) {
F[i] = F[i - ] * 1LL * i % MOD;
Finv[i] = Finv[i - ] * 1LL * inv[i] % MOD;
}
}
/*
ntt.run(a, len, 1, MOD);
ntt.run(b, len, 1, MOD);
REP(0, len) c[i] = a[i] * b[i] % MOD;
ntt.run(c, len, -1, MOD);
*/
struct NTT {
enum {g = };
// @private
int rev(int x, int r) {
int ans = ;
for (int i = ; i < r; i++) {
if (x & ( << i)) ans += << (r - i - );
}
return ans;
}
// @public
void run(LL a[], int n, int on, LL MOD) {
int r = (int)log2(n + 1e-);
for (int i = ; i < n; i++) {
int tmp = rev(i, r);
if (i < tmp) swap(a[i], a[tmp]);
}
for (int s = ; s <= r; s++) {
int m = << s;
LL wn = quickPow(g, (MOD - ) / m, MOD);
for (int k = ; k < n; k += m) {
LL w = ;
for (int j = ; j < (m >> ); j++) {
LL t = w * (a[k + j + (m >> )] % MOD) % MOD, u = a[k + j] % MOD;
a[k + j] = (u + t) % MOD;
a[k + j + (m >> )] = ((u - t) % MOD + MOD) % MOD;
w *= wn; w %= MOD;
}
}
}
if (on < ) {
for (int i = ; i < (n >> ); i++) swap(a[i], a[n - i]);
LL inv = quickPow(n, MOD - , MOD);
for (int i = ; i < n; i++) a[i] = a[i] % MOD * inv % MOD;
}
}
} ntt;
int main() {
inv_init();
while (~scanf("%d", &n)) {
a = ;
for (int i = ; i <= n; i++) {
scanf("%lld", &C[i]);
}
scanf("%d", &m);
for (int i = ; i < m; i++) {
scanf("%d", &temp);
a -= temp;
if (a <= ) a += MOD;
}
LL temp = 1LL;
int len = ; while (len < ( * n)) len <<= ;
for (int i = ; i < len; i++) {
if (i <= n) {
A[i] = temp * Finv[i] % MOD;
B[i] = F[n - i] * C[n - i] % MOD;
}
else A[i] = B[i] = ;
temp = (temp * a) % MOD;
}
ntt.run(A, len, , MOD);
ntt.run(B, len, , MOD);
for (int i = ; i < len; i++) {
A[i] = (A[i] * B[i]) % MOD;
}
ntt.run(A, len, -, MOD);
for (int i = ; i <= n; i++) {
//cout << A[i] << endl;
A[i] = (A[i] % MOD + MOD) % MOD * Finv[n - i] % MOD;
}
for (int i = ; i <= n; i++) {
printf("%lld ", A[n - i]);
}
puts("");
}
return ;
}

hdu6061[NTT推公式] 2017多校3的更多相关文章

  1. hdu6078[优化递推过程] 2017多校4

    这道题一眼看过去好像和最长公共子序列有点像. 一开始只想到暴力的推法, 令dp[i][j][k]表示 a[i]=b[j](即以ai,bj为结尾的波浪序列的方案数), 且最终状态为k(0,1分别代表下降 ...

  2. 2017多校第7场 HDU 6128 Inverse of sum 推公式或者二次剩余

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6128 题意:给你n个数,问你有多少对i,j,满足i<j,并且1/(ai+aj)=1/ai+1/a ...

  3. 2019牛客多校第二场 A Eddy Walker(概率推公式)

    2019牛客多校第二场 A Eddy Walker(概率推公式) 传送门:https://ac.nowcoder.com/acm/contest/882/A 题意: 给你一个长度为n的环,标号从0~n ...

  4. HDU 4870 Rating(概率、期望、推公式) && ZOJ 3415 Zhou Yu

    其实zoj 3415不是应该叫Yu Zhou吗...碰到ZOJ 3415之后用了第二个参考网址的方法去求通项,然后这次碰到4870不会搞.参考了chanme的,然后重新把周瑜跟排名都反复推导(不是推倒 ...

  5. 2017 多校5 Rikka with String

    2017 多校5 Rikka with String(ac自动机+dp) 题意: Yuta has \(n\) \(01\) strings \(s_i\), and he wants to know ...

  6. 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 ...

  7. hdu6069[素数筛法] 2017多校4

    对于[l , r]内的每个数,根据唯一分解定理有   所以有  因为     //可根据唯一分解定理推导 所以      题目要求 就可以运用它到上述公式 (注意不能暴力对l,r内的数一个个分解算贡献 ...

  8. HDU 4873 ZCC Loves Intersection(JAVA、大数、推公式)

    在一个D维空间,只有整点,点的每个维度的值是0~n-1 .现每秒生成D条线段,第i条线段与第i维度的轴平行.问D条线段的相交期望. 生成线段[a1,a2]的方法(假设该线段为第i条,即与第i维度的轴平 ...

  9. HDU 5047 推公式+别样输出

    题意:给n个‘M'形,问最多能把平面分成多少区域 解法:推公式 : f(n) = 4n(4n+1)/2 - 9n + 1 = (8n+1)(n-1)+2 前面部分有可能超long long,所以要转化 ...

随机推荐

  1. this的三个要点

    1.this的指向是什么? 指向对象 2.this可以书写在哪里? 可以写在全局,也可以写在函数里 三种写在函数里的方式: 2.1  this可变 function f() { this.name = ...

  2. 关于svn提交的时候强制写注释

    本文固定链接: http://www.linuxyan.com/linux-service/229.html 转载请注明: admin 2012年09月29日 于 ㄨ销声匿迹.Linux 发表 在sv ...

  3. COGS 1786. 韩信点兵

    ★★★   输入文件:HanXin.in   输出文件:HanXin.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 韩信是中国军事思想“谋战”派代表人物,被后人奉为“ ...

  4. iphone图片简单处理

    使用sips批量缩放图片大小 >>sips -s format jpeg -Z 250 someImage.PNG --out myImage.JPEG 把someImage.PNG转换为 ...

  5. PHP 哈希表碰撞攻击

    理想情况下哈希表插入和查找操作的时间复杂度均为O(1),任何一个数据项可以在一个与哈希表长度无关的时间内计算出一个哈希值(key),然后在常量时间内定位到一个桶(术语bucket,表示哈希表中的一个位 ...

  6. 图像处理框架 Core Image 介绍

    这篇文章会为初学者介绍一下 Core Image,一个 OS X 和 iOS 的图像处理框架. 如果你想跟着本文中的代码学习,你可以在 GitHub 上下载示例工程.示例工程是一个 iOS 应用程序, ...

  7. elasticsearch最全详细使用教程:搜索详解

    一.搜索API 1. 搜索API 端点地址从索引tweet里面搜索字段user为kimchy的记录 GET /twitter/_search?q=user:kimchy从索引tweet,user里面搜 ...

  8. layui 数据table隐藏表头

    $('.layui-table .layui-table-cell > span').css({'font-weight': 'bold'});//表头字体样式 /*$('th').css({' ...

  9. shell补充知识点

    一.cut(截取) 1.按字节截取(-b) 例:/etc/passwd文件截取 head -5 passwd | cut -b 1-4 ----->截取1-4的字节 head -5 passwd ...

  10. 使用jQuery 发送Ajax

    jQuery AJAX 方法 AJAX 是一种与服务器交换数据的技术,可以在不重新载入整个页面的情况下更新网页的一部分. 下面的表格列出了所有的 jQuery AJAX 方法: 构建页面:jqlogi ...