以下这份代码并没有过。但感觉没有问题。不是蜜汁WA就是蜜汁T。

 #include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
typedef long long ll;
using namespace std;
const int mod = ;
const int N = , K = ;
int i;
int P = , G = , g[K+], ng[K+], inv[N+];
ll A[N*+], B[N*+];
ll pow(ll a, int n){
ll ans = ;
while(n){
if(n&)
ans = ans*a%P;
a = a*a%P;
n >>= ;
}
return ans;
}
void NTT(ll*a,int n,int t){
for(int i=,j=;i<n-;i++){
for(int s=n;j^=s>>=,~j&s;);
if(i<j)swap(a[i], a[j]);
}
for(int d=;(<<d)<n;d++){
int m=<<d,m2=m<<;
ll _w=pow(G, (P-)>>(d+));
if(t != ) _w = pow(_w, P-);
for(int i=;i<n;i+=m2)for(ll w=,j=;j<m;j++){
ll&A=a[i+j+m],&B=a[i+j],t=w*A%P;
A=B-t;if(A<)A+=P;
B=B+t;if(B>=P)B-=P;
w=w*_w%P;//////////////////////
}
}
if(t==-)for(int i=,j=pow(n, P-);i<n;i++)a[i]=a[i]*j%P;
} /*****************另一份NTT模板
void change (ll y[], int len) {
for(int i = 1, j = len / 2; i < len - 1; i++) {
if(i < j) swap(y[i], y[j]);
int k = len / 2;
while(j >= k) {
j -= k;
k /= 2;
}
if(j < k) j += k;
}
}
void ntt(ll y[], int len, int on) {
change (y, len);
for(int h = 2; h <= len; h <<= 1) {
ll wn = pow(G, (mod-1)/h);
if(on == -1) wn = pow(wn, mod-2);
for(int j = 0; j < len; j += h) {
long long w = 1;
for(int k = j; k < j + h / 2; k++) {
long long u = y[k];
long long t = w * y[k + h / 2] % mod;
y[k] = (u + t) % mod;
y[k+h/2] = (u - t + mod) % mod;
w = w * wn % mod;
}
}
}
if(on == -1) {
long long t = pow (len, mod - 2);
for(int i = 0; i < len; i++)
y[i] = y[i] * t % mod;
}
}
***************************/ int a[N];
int pow2[N], r[N], f[N], F[N]; int main(){
// freopen("in", "r", stdin);
// freopen("outd", "w", stdout);
// for(g[K]=pow(G,(P-1)/N),ng[K]=pow(g[K],P-2),i=K-1;~i;i--)
// g[i]=(ll)g[i+1]*g[i+1]%P, ng[i]=(ll)ng[i+1]*ng[i+1]%P;
for(inv[]=inv[]=,i=;i<N;i++) inv[i]=(ll)(P-inv[P%i])*(P/i)%P; for(f[]=f[]=r[]=r[]=pow2[]=, i=pow2[]=; i < N; i++){
r[i] = (ll)inv[i]*r[i-]%P;
f[i] = (ll)i*f[i-]%P;
pow2[i] = (pow2[i-]<<)%P;
} int t, ca = , n; scanf("%d", &t);
while(t--){
scanf("%d", &n);
for(i = ; i <= n; i++) scanf("%d", a+i);
sort(a+, a+n+, greater<int>() ); memset(B, , sizeof(B));
memset(A, , sizeof(A));
for(i = ; i <= n; i++){
B[i-] = (ll)f[i-]*pow2[n-i]%P*a[i]%P;
A[i-] = r[n-i];
} int len = ;
while(len <= n+n) len <<= ;
NTT(B, len, ), NTT(A, len, );
for(int i = ; i < len; i++)
A[i] = B[i]*A[i]%P;
NTT(A, len, -); for(int i = ; i <= n; i++){
F[i] = A[n-+i]*(ll)r[i-]%P+F[i-];
if(F[i] >= P) F[i] %= P;
printf("%d ", F[i]);
}
puts("");
}
return ;
}

以上代码蜜汁T,NTT()换成ntt()后蜜汁WA。

和AC代码对拍很久也没看出什么问题。

HDU5829 NTT的更多相关文章

  1. Tsinsen A1493 城市规划(DP + CDQ分治 + NTT)

    题目 Source http://www.tsinsen.com/A1493 Description 刚刚解决完电力网络的问题, 阿狸又被领导的任务给难住了. 刚才说过, 阿狸的国家有n个城市, 现在 ...

  2. HDU5322 Hope(DP + CDQ分治 + NTT)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5322 Description Hope is a good thing, which can ...

  3. Codeforces632E Thief in a Shop(NTT + 快速幂)

    题目 Source http://codeforces.com/contest/632/problem/E Description A thief made his way to a shop. As ...

  4. hihoCoder1388 Periodic Signal(2016北京网赛F:NTT)

    题目 Source http://hihocoder.com/problemset/problem/1388 Description Profess X is an expert in signal ...

  5. hihocoder #1388 : Periodic Signal NTT&FFT

    传送门:hihocoder #1388 : Periodic Signal 先来几个大牛传送门:  (模板) NTT long long 版 解法一:因为我们知道FFT会精度不够,所以坚持用NTT,但 ...

  6. FFT,NTT 专题

    学习傅里叶的基本性质及其代码,可以参考大神理解 还有 ACdream 的博客 贴一下NTT的模板: using namespace std; typedef long long ll; int n; ...

  7. [快速数论变换 NTT]

    先粘一个模板.这是求高精度乘法的 #include <bits/stdc++.h> #define maxn 1010 using namespace std; char s[maxn]; ...

  8. NTT

    1 问题描述FFT问题解决的是复数域上的卷积.如果现在的问题是这样:给出两个整数数列$Ai,Bj,0\leq i\leq n-1,0\leq j\leq m-1$,以及素数$P$,计算新数列$Ci=( ...

  9. NTT【51nod】1514 美妙的序列

    题意:1~n 的全排列中,有多少个排列满足任意从中间切成两段后,左边段的最大值大于右边段的最小值? 例如:n为3时有3种 2 3 1 3 1 2 3 2 1 解释:比如 2 3 1 (2) (3 1) ...

随机推荐

  1. Linux之Ganglia源码安装

    一.Ganglia简介: Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点.Ganglia的核心包含gmond.gmetad以及一个Web前端.主要是用来监 ...

  2. PHP获取客户端真实IP的自定义函数

    <?php //虽然使用 $_SERVER[REMOTE_ADDR] 也可以获取,但是要获取真实的客户端IP地址,需要使用下面的方法: function _getIP(){ $ip=getenv ...

  3. C#:屏幕显示区域问题

    更改电脑屏幕显示的文字大小后,平面显示区域问题. /// <summary> /// 屏幕显示尺寸 /// </summary> public static Size Revi ...

  4. mysql使用索引扫描来做排序

    mysql有两种方式可以生成有序的结果,通过排序操作或者按照索引顺序扫描,如果explain的type列的值为index,则说明mysql使用了索引扫描来做排序(不要和extra列的Using ind ...

  5. linux正则表达式使用

    首先介绍下正则表达式,它是由一串字符和元字符构成的字符串,简称RE(Regular Expression),它的主要功能是文本查询和字符串操作,它可以匹配一个文本的字符和字符集,达到数据过滤的效果. ...

  6. [ios][swift]使用swift闭包进行viewcontroller反向传值

    闭包参考:http://c.biancheng.net/cpp/html/2285.html   闭包详解 传值参考:http://www.tuicool.com/articles/vy2uUz Sw ...

  7. ACM题目————字串数

    Description 一个A和两个B一共可以组成三种字符串:"ABB","BAB","BBA". 给定若干字母和它们相应的个数,计算一共可 ...

  8. 怎样解决:未找到路径“……”的控制器或该控制器未实现 IController?

    就是要加上new{area=""},比如下面的: @{Html.RenderAction("Cartsummary","ShoppingCart&qu ...

  9. google prettify 代码高亮显示

    引入js和css文件 下载地址 http://files.cnblogs.com/jaday/prettify.zip js文件代码 !function(){var q=null;window.PR_ ...

  10. 2016年11月22日 星期二 --出埃及记 Exodus 20:13

    2016年11月22日 星期二 --出埃及记 Exodus 20:13 "You shall not murder.不可杀人.