题解:

我是参考的

http://blog.csdn.net/qq_32570675/article/details/76571666

这一篇

orz 原来可以这么变换,涨姿势

代码:

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
typedef long long LL;
const int maxn = 1e5 + ;
const int g = ;
const int MOD = ;
LL F[maxn*], G[maxn*], mul[maxn], imul[maxn], ans[maxn], qp[maxn];
int a[maxn]; LL mypow(LL a, LL b){
LL ans = ; for(; b; b >>= ) { if(b&) (ans *= a) %= MOD; (a *= a) %= MOD; } return ans;
} void Modify(LL *a, int L){
for(int i = , j = L/; i < L-; i++){
if(i < j) swap(a[i], a[j]);
int k = L/;
while(j >= k){
j -= k;
k >>= ;
}
if(j < k) j += k;
}
} void NTT(LL *y, int L, int ty){
Modify(y, L);
int id = ;
for(int h = ; h <= L; h <<= ){
id++;
for(int j = ; j < L; j += h){
LL w = ;
for(int k = j; k < j + h/; k++){
LL u = y[k];
LL t = y[k+h/]*w%MOD;
y[k] = (u+t)%MOD;
y[k+h/] = (u-t+MOD)%MOD;
w = w*qp[id]%MOD;
}
}
}
if(ty == -){
for(int i = ; i < L/; i++) swap(y[i], y[L-i]);
LL inv = mypow(L, MOD-);
for(int i = ; i < L; i++)
y[i] = y[i]*inv%MOD;
}
} void init(){
int n = 1e5 + ;
mul[] = imul[] = mul[] = ;
for(int i = ; i <= n; i++) mul[i] = (mul[i-]*i)%MOD;
for(int i = ; i <= n; i++) imul[i] = mypow(mul[i], MOD-);
for(int i = ; i < ; i++){
int t = <<i;
qp[i] = mypow(g, (MOD-)/t);
}
} int main()
{
init();
int n, m, x;
while(cin>>n){
for(int i = ; i <= n; i++) scanf("%d", &a[i]);
cin>>m;
LL b = ;
for(int i = ; i <= m; i++){
scanf("%d", &x);
b -= x;
(b += MOD) %= MOD;
}
memset(F, , sizeof(F));
memset(G, , sizeof(G));
for(int i = ; i <= n; i++){
F[i] = a[n-i]*mul[n-i]%MOD;
G[i] = mypow(b, i)*imul[i]%MOD;
}
int L = , nn = (n+)<<;
while(L < nn) L <<= ;
NTT(F, L, ); NTT(G, L, );
for(int i = ; i < L; i++){
F[i] = (F[i]*G[i])%MOD;
}
NTT(F, L, -);
for(int i = ; i <= n; i++){
(F[i] += MOD) %= MOD;
ans[i] = F[n-i]*imul[i]%MOD;
}
for(int i = ; i <= n; i++) printf("%d ", ans[i]);
cout<<endl;
}
return ;
}

2017 Multi-University Training Contest - Team 3 RXD and functions(NTT)的更多相关文章

  1. 2017 Multi-University Training Contest - Team 3 RXD and dividing(树)

    题解: 其实贪心地算就可以了 一个最优的分配就是每条边权贡献的值为min(k, sz[x]),sz[x]是指子树的大小 然后最后加起来就是答案. #include <iostream> # ...

  2. HDU 6061 RXD and functions(NTT)

    题意 给定一个\(n​\) 次的 \(f​\) 函数,向右移动 \(m​\) 次得到 \(g​\) 函数,第 \(i​\) 次移动长度是 \(a_i​\) ,求 \(g​\) 函数解析式的各项系数,对 ...

  3. 【推导】【NTT】hdu6061 RXD and functions(NTT)

    题意:给定一个n次多项式f(x)的各项系数,让你求f(x-Σai)的各项系数. http://blog.csdn.net/v5zsq/article/details/76780053 推导才是最关键的 ...

  4. 2017 Multi-University Training Contest - Team 3 Kanade's trio(字典树+组合数学)

    题解: 官方题解太简略了orz 具体实现的方式其实有很多 问题就在于确定A[j]以后,如何找符合条件的A[i] 这里其实就是要提前预处理好 我是倒序插入点的,所以要沿着A[k]爬树,找符合的A[i] ...

  5. 2017 Multi-University Training Contest - Team 3 hdu6060 RXD and dividing

    地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6060 题目: RXD and dividing Time Limit: 6000/3000 M ...

  6. 2017 Multi-University Training Contest - Team 9 1005&&HDU 6165 FFF at Valentine【强联通缩点+拓扑排序】

    FFF at Valentine Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  7. 2017 Multi-University Training Contest - Team 9 1004&&HDU 6164 Dying Light【数学+模拟】

    Dying Light Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Tot ...

  8. 2017 Multi-University Training Contest - Team 9 1003&&HDU 6163 CSGO【计算几何】

    CSGO Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  9. 2017 Multi-University Training Contest - Team 9 1002&&HDU 6162 Ch’s gift【树链部分+线段树】

    Ch’s gift Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

随机推荐

  1. linux命令之压缩与归档

    1.   gzip:压缩工具 语法·:gzip [选项](参数) 命令说明:运用广泛的压缩程序,文件经它压缩后,其名称后面以“.gz”扩展名 常用命令选项: -N:压缩文件后,保留文件的原文件名和时间 ...

  2. ASP.NET安全验证

    一.为什么要用安全验证,使用安全验证有什么好处. 构造特殊的链接地址,导致文件内的数据泄露 数据库泄露 安全防范的首要策略:所有的HTTP访问都要经过IIS,所以限制IIS的安全性是关键 二.安全验证 ...

  3. vue 路由对象(常用的)

    路由对象 在使用了 vue-router 的应用中,路由对象会被注入每个组件中,赋值为 this.$route ,并且当路由切换时,路由对象会被更新. 路由对象暴露了以下属性: $route.path ...

  4. 八、USB驱动分析

    学习目标:分析USB驱动源码结构. 一.Windows下USB驱动理论问题 1. 当usb设备接入PC时,右下角弹出"发现AAA",并弹出对话框,提示安装驱动程序.没有驱动程序,W ...

  5. 模块导入应用settings的字符串

    看django源码,感觉他的settings好高大上然后自己试试 以上是文件目录 email.py中代码 class Email: def send(self): print('发送email') M ...

  6. Hash学习笔记

    啊啊啊啊,这篇博客估计是我最早的边写边学的博客了,先忌一忌. 本文章借鉴与一本通提高篇,但因为是个人的学习笔记,因此写上原创. 目录 谁TM边写边学还写这玩意? 后面又加了 Hash Hash表 更多 ...

  7. mongodb的学习之旅一

    描述 作为一枚菜鸟级别的coder,刚接触nodejs没有多久.现在在学习微信公众号的开发,但是碰到了mongodb保存用户数据的时候,出现了DeprecationWarning: Mongoose: ...

  8. 标记编码报错ValueError: bad input shape ()

    <Python机器学习经典实例>2.9小节中,想自己动手实践汽车特征评估质量,所以需要对数据进行预处理,其中代码有把字符串标记编码为对应的数字,如下代码 input_data = ['vh ...

  9. Sql Server 游标概念与实例

    引言 先不讲游标的什么概念,看如下Sql Server2008 图例: 需求:两张表的O_ID是一一对应的,现在求将加薪的工资+原来的工资=现在的工资,也就是O_Salary=O_Salary+A_S ...

  10. Uber:中国市场两年内不考虑盈利,每年补贴10亿美金

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...