题解:

我是参考的

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. Co. - Microsoft - Windows - 快捷键

    [F1-F12]键 [Win]键 Windows键就是电脑键盘上是Windows图标的键,一般在Ctrl键和Alt键之间.搜索看整个键盘你会发现键盘上有两个Windows键,主要是左右手设计方便按各种 ...

  2. Python练习笔记(2)

    文件读写,多线程.多进程 import time,os,threading,random def file_read(path): try: with open(path, 'r') as f: # ...

  3. 宝塔漏洞 XSS窃取宝塔面板管理员漏洞 高危

    宝塔是近几年刚崛起的一款服务器面板,深受各大站长的喜欢,windows2003 windows2008windosws 2012系统,linux centos deepin debian fedora ...

  4. poj1050 dp动态规划

    Description Given a two-dimensional array of positive and negative integers, a sub-rectangle is any ...

  5. struts2官方 中文教程 系列十四:主题Theme

    介绍 当您使用一个Struts 2标签时,例如 <s:select ..../>  在您的web页面中,Struts 2框架会生成HTML,它会显示外观并控制select控件的布局.样式和 ...

  6. Question | 关于Android安全的一二事

    本文来自网易云社区 "Question"为网易云易盾的问答栏目,将会解答和呈现安全领域大家常见的问题和困惑.如果你有什么疑惑,也欢迎通过邮件(zhangyong02@corp.ne ...

  7. php用GD库给图片添加水印

    php用GD库给图片添加文字水印,整个代码比较简单,DEMO如下: <?php /*打开图片*/ //1.配置图片路径 $src = "aeroplane.jpg"; //2 ...

  8. 「个人训练」Radar Installation(POJ-1328)

    这条题目A了十次...emmmmm 其实不难就是一个贪心.... 先说下算法(之前的和现在的) 之前考虑的其实很简单.用平面几何即可将雷达可以放置的区域转化为区间(顺便判断是否无解.问题就比较简单了: ...

  9. python+UIAutomation+libary

    #! /usr/bin/env python#Author: XIE TIAN# -*- coding:utf8 -*-from __future__ import unicode_literalsi ...

  10. java 读取配置文件 与更新

    笔记 public class Config { private static Properties props = new Properties(); static File configFile ...