2017 Multi-University Training Contest - Team 3 RXD and functions(NTT)
题解:
我是参考的
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)的更多相关文章
- 2017 Multi-University Training Contest - Team 3 RXD and dividing(树)
题解: 其实贪心地算就可以了 一个最优的分配就是每条边权贡献的值为min(k, sz[x]),sz[x]是指子树的大小 然后最后加起来就是答案. #include <iostream> # ...
- HDU 6061 RXD and functions(NTT)
题意 给定一个\(n\) 次的 \(f\) 函数,向右移动 \(m\) 次得到 \(g\) 函数,第 \(i\) 次移动长度是 \(a_i\) ,求 \(g\) 函数解析式的各项系数,对 ...
- 【推导】【NTT】hdu6061 RXD and functions(NTT)
题意:给定一个n次多项式f(x)的各项系数,让你求f(x-Σai)的各项系数. http://blog.csdn.net/v5zsq/article/details/76780053 推导才是最关键的 ...
- 2017 Multi-University Training Contest - Team 3 Kanade's trio(字典树+组合数学)
题解: 官方题解太简略了orz 具体实现的方式其实有很多 问题就在于确定A[j]以后,如何找符合条件的A[i] 这里其实就是要提前预处理好 我是倒序插入点的,所以要沿着A[k]爬树,找符合的A[i] ...
- 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 ...
- 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) ...
- 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 ...
- 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 ...
- 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 ...
随机推荐
- 基于ftp服务的三种登录方式及其相关的访问控制和优化
ftp(简单文件传输协议),是一种应用广泛的网络文件传输协议和服务,占用20和21号端口,主要用于资源的上传和下载. 在linux对于ftp同widows一样具有很多的种类,这里主要介绍vsfptd( ...
- Node.js(一)----安装
1.下载 地址 https://nodejs.org/en/download/ 注: 系统为ubuntu 下载的源码包 tar.gz 或者 wget https://nodejs.org/dist/v ...
- ruby net/http模块使用
ruby中的NET::HTTP:这里暂时先列出几个固定用法: 其中一,二不支持请求头设置(header取ruby默认值),只能用于基本的请求,不支持持久连接,如果您执行许多HTTP请求,则不推荐它们: ...
- asp.net core mvc简介
MVC 通常而言,我们使用.NET Core MVC 构建网页应用与 API,MVC是使用模型-视图-控制器(Model-View-Controller)设计模式. 创建项目 使用如下命令创建一个名称 ...
- 登録更新(BAPI)
購買管理(MM) * [BAPI_REQUISITION_CREATE] 購買依頼登録 * [BAPI_REQUISITION_CHANGE] 購買依頼変更 * [BAPI_REQUISITION_D ...
- xpath简单入门
语法: 选取节点: 实例: (贴图转载自w3school) 补充: /a/@href #获取a标签的href属性 当<div class="demo">& ...
- python基础之IO模型
IO模型分类 五种IO Model blocking IO 阻塞IO nonblocking IO 非阻塞IO IO multiplexing IO多路复用 signal driven IO 信号驱动 ...
- python基础之多线程
概念 进程:进程就是一个程序在一个数据集上的一次动态执行过程 程序:代码 数据集:程序执行过程中需要的资源 进程控制块:完成状态保存的单元 线程:线程是寄托在进程之上,为了提高系统的并发性 线程是进程 ...
- 20145202马超 2006-2007-2 《Java程序设计》第2周学习总结
20145202马超 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 第三章主要讲了各种变量的设置以及流程控制,基本上都和c是一样的.print是不太一样的, ...
- JAVA大作业汇总2
JAVA大作业2 代码 package thegreatwork; //Enum一般用来表示一组相同类型的常量,这里用于表示运动方向的枚举型常量,每个方向对象包括方向向量. public enum D ...