以下这份代码并没有过。但感觉没有问题。不是蜜汁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. 在centos6.5-64bit上安装wxHexEditor,以查看编译二进制文件

    目前在做一个存储,磁盘里面的数据老是出现很诡异的地方,某个通道的录像播放到一半的时候,切换到另外一个通道的视频上去了,一直不知道怎么下手,想着用十六进制编辑器查看磁盘数据. sudo yum inst ...

  2. PHP的一些常用汇总

    1. 使用strcmp()函数[区分大小写] 和strcasecmp()函数按照字节比较.比较结果显示:前和后相同为0,前>后为大于0,前<后为小于0. 2. 格式化字符串:number_ ...

  3. ecshop的几个小瑕疵

    在安装Ecshop的时候,遇到两个问题: 1.Strict Standards: Non-static method cls_image::gd_version() should not be cal ...

  4. SpringMVC 接收ajax发送的数组对象

    本文粘贴自:http://my.oschina.net/jiefalcon/blog/384153?fromerr=24Lewn46 [转]SpringMVC @RequestBody接收Json对象 ...

  5. Integer Inquiry -TJU1112

    作为最简单的高精度加法,要注意的是如下几点, 第一,因为是数位达到上百位的大数,所以只能用字符串数组来存贮. 第二,为了方便之后的相加操作,应该把字符串数组逆序转化为一个整型数组. 第三,在控制进位的 ...

  6. 收藏的Android非常好用的组件或者框架。

    博客分类: android android框架 先说两个网站: http://www.androidviews.net/ http://www.theultimateandroidlibrary.co ...

  7. Spring 中的页面重定向

    在写 java 程序设计实践作业的时候遇到了重定向页面的需求,因为还没学到 java web 开发,所以自己就在网上搜了一下相关的代码,总结出了一些小小的经验,希望在下学期学 java web 的时候 ...

  8. PostgreSql安装

    官网:http://www.postgresql.org/download/linux/redhat/ 一.安装 由于我的机子是centos6.2,所以选择RedHat的. 按照官网所说的进行安装: ...

  9. tinyhttpd服务器源码学习

    下载地址:http://sourceforge.net/projects/tinyhttpd/ /* J. David's webserver */ /* This is a simple webse ...

  10. HDU 4651 Partition 整数划分,可重复情况

    Partition Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...