省队集训day6 A



code:
#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
#define maxn 262146
#define mod 950009857
#define g 7
using namespace std;
typedef long long int64;
char ch;
int n,m,k,x,N,len,rev[maxn];
int64 a[maxn],b[maxn],c[maxn],wwn[][maxn],wn,w,t1,t2;
bool ok;
void read(int &x){
for (ok=,ch=getchar();!isdigit(ch);ch=getchar()) if (ch=='-') ok=;
for (x=;isdigit(ch);x=x*+ch-'',ch=getchar());
if (ok) x=-x;
}
void read(int64 &x){
for (ok=,ch=getchar();!isdigit(ch);ch=getchar()) if (ch=='-') ok=;
for (x=;isdigit(ch);x=x*+ch-'',ch=getchar());
if (ok) x=-x;
}
int re(int v){
int t=;
for (int i=;i<len;i++) t<<=,t|=v&,v>>=;
return t;
}
int64 ksm(int64 a,int64 b){
int64 t=;
for (;b;b>>=){if (b&) t=t*a%mod; a=a*a%mod;}
return t;
}
void ntt(int64 *a,int op){
for (int i=;i<N;i++) if (i<rev[i]) swap(a[i],a[rev[i]]);
for (int s=;s<=N;s<<=){
wn=wwn[op][s];
for (int i=;i<N;i+=s){
w=;
for (int j=i;j<i+(s>>);j++,w=w*wn%mod){
t1=a[j],t2=w*a[j+(s>>)]%mod;
a[j]=(t1+t2)%mod,a[j+(s>>)]=((t1-t2)%mod+mod)%mod;
}
}
}
if (op==){
int64 x=ksm(N,mod-);
for (int i=;i<N;i++) a[i]=a[i]*x%mod;
}
}
int main(){
read(n),read(m),read(k),N=;
for (int i=;i<n;i++) read(a[i]);
for (int i=;i<=m;i++) read(x),b[x]++;
while (N<(n<<)) len++,N<<=;
for (int i=;i<N;i++) rev[i]=re(i);
for (int i=;i<=len;i++) wwn[][<<i]=ksm(g,(mod-)/(<<i));
for (int i=;i<=len;i++) wwn[][<<i]=ksm(wwn[][<<i],mod-);
for (;k;k>>=){
ntt(b,);
if (k&){
ntt(a,);
for (int i=;i<N;i++) a[i]=a[i]*b[i]%mod;
ntt(a,);
for (int i=n;i<N;i++) a[i]=;
}
for (int i=;i<N;i++) b[i]=b[i]*b[i]%mod;
ntt(b,);
for (int i=n;i<N;i++) b[i]=;
}
for (int i=;i<n;i++) printf("%lld ",a[i]);
puts("");
return ;
}
省队集训day6 A的更多相关文章
- 省队集训day6 C
Description 给定平面上的 N 个点, 其中有一些是红的, 其他是蓝的.现在让你找两条平行的直线, 使得在保证 不存在一个蓝色的点 被夹在两条平行线之间,不经过任何一个点, 不管是蓝色 ...
- 省队集训day6 B
一道AC自动机题···· 一定要把一个节点没有的儿子接到它fai的儿子,否则会卡到n^2的······· #include<cstdio> #include<iostream> ...
- 省队集训 Day6 序列
[题目大意] 给出$n$个数的序列$a_1, a_2, ..., a_n$,有$m$次操作,为下面三种: $A~l~r~d$:区间$[l,r]$,全部加$d$. $M~l~r~d$:区间$[l,r]$ ...
- HN2018省队集训
HN2018省队集训 Day1 今天的题目来自于雅礼的高二学长\(dy0607\). 压缩包下载 密码: 27n7 流水账 震惊!穿着该校校服竟然在四大名校畅通无阻?霸主地位已定? \(7:10\)从 ...
- JS省队集训记
不知不觉省队集训已经结束,离noi也越来越近了呢 论考前实战训练的重要性,让我随便总结一下这几天的考试 Day 1 T1 唉,感觉跟xj测试很像啊?meet in middle,不过这种题不多测是什么 ...
- LOJ #6074. 「2017 山东一轮集训 Day6」子序列
#6074. 「2017 山东一轮集训 Day6」子序列 链接 分析: 首先设f[i][j]为到第i个点,结尾字符是j的方案数,这个j一定是从i往前走,第一个出现的j,因为这个j可以代替掉前面所有j. ...
- [2018HN省队集训D9T1] circle
[2018HN省队集训D9T1] circle 题意 给定一个 \(n\) 个点的竞赛图并在其中钦定了 \(k\) 个点, 数据保证删去钦定的 \(k\) 个点后这个图没有环. 问在不删去钦定的这 \ ...
- [2018HN省队集训D8T1] 杀毒软件
[2018HN省队集训D8T1] 杀毒软件 题意 给定一个 \(m\) 个01串的字典以及一个长度为 \(n\) 的 01? 序列. 对这个序列进行 \(q\) 次操作, 修改某个位置的字符情况以及查 ...
- [2018HN省队集训D8T3] 水果拼盘
[2018HN省队集训D8T3] 水果拼盘 题意 给定 \(n\) 个集合, 每个集合包含 \([1,m]\) 中的一些整数, 在这些集合中随机选取 \(k\) 个集合, 求这 \(k\) 个集合的并 ...
随机推荐
- SRM 390(1-250pt)
DIV1 250pt 题意:给定整数n和k,问最少需要多少个n连接在一起形成的新整数t,使得t是k的倍数.如果不能形成倍数,输出-1.k <= 10^5,n <= 10^9. 解法:不断增 ...
- HDU 4751 Divide Groups 2013 ACM/ICPC Asia Regional Nanjing Online
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4751 题目大意:判断一堆人能否分成两组,组内人都互相认识. 解题思路:如果两个人不是相互认识,该两人之 ...
- 关于C语言指针的问题
在学习关于C语言指针的时候,发现这样一个问题,代码如下: #include<stdio.h> #include<stdlib.h> #include<string.h&g ...
- Delphi图像处理 -- RGB与HSL转换
阅读提示: <Delphi图像处理>系列以效率为侧重点,一般代码为PASCAL,核心代码采用BASM. <C++图像处理>系列以代码清晰,可读性为主,全部使用C ...
- Android 通过反射让SQlite建表如此简单
我们通常使用SQlite的时候,假设我们有10张表,我们要写10个建表语句.而建表语句中仅仅有一些字段的名字须要改而已,这样既费时又费力,还easy出错.我们知道写sql语句的时候常常会写错,假设写错 ...
- 禁止执行某些讨厌的程序,如tadb.exe
第一步:首先通过快捷键"Win+R"来打开"执行"菜单. 第二步:输入"gpedit.msc"回车确认,进入我们电脑中的组策略编辑器. 第三 ...
- MyBatis报错
1.错误描写叙述 2014-11-2 15:03:11 org.apache.catalina.core.StandardEngine start 信息: Starting Servlet Engin ...
- [转] boost.circular_buffer简介
http://www.cnblogs.com/TianFang/archive/2013/02/05/2892503.html 很多时候,我们需要在内存中记录最近一段时间的数据,如操作记录等.由于这部 ...
- android ToolBar与DrawerLayout笔记
通过Android Studio 生成的Nagvition DrawerLayout Activity 自带的布局中的NagvitionView会覆盖ToolBar直接通到statusBar. 但是自 ...
- AS 2.0新功能 Instant Run
Instant Run上手 作为一个Android开发者,很多的时候我们需要花大量的时间在bulid,运行到真机(虚拟机)上,对于ios上的Playground羡慕不已,这种情况将在Android S ...