NTT
来源:互联网 发布:淘宝没有扣分的违规 编辑:程序博客网 时间:2024/06/07 05:46
我觉得我还需要理解一下 FFT 和 NTT …
#include <cstdio>#include <cstdlib>#include <iostream>#include <algorithm>const int maxn = 4e4+5, Mod = 950009857;const int G = 7;int n, m, k, N = 1;long long g[maxn], invN;long long f[maxn], c[maxn];long long p[maxn];long long power(long long x,int t){ long long ret = 1; while(t) { if(t&1) ret *= x, ret %= Mod; x *= x, x %= Mod, t >>= 1; } return ret;}void PreWork(){ while(N <= (n<<1)) N <<= 1; invN = power(N, Mod - 2); g[0] = g[N] = 1, g[1] = power(G, (Mod-1)/N); for(int i = 2; i < N; i++) g[i] = g[i-1] * g[1] % Mod;}void NTT(long long a[],int len,int flag){ for(int i = 0; i < len; i++) { int s = i, p = 0; for(int j = len>>1; j > 0; j >>= 1) p |= (s&1)*j, s >>= 1; if(p > i) std::swap(a[p], a[i]); } for(int L = 2 ; L <= len; L <<= 1) for(int i = 0; i < len ; i += L) for(int j = 0; j < (L>>1); j++) { long long w = (flag == 1)?g[N/L*j]:g[N - N/L*j]; long long u = a[i + j], v = a[i + j +(L>>1)]*w % Mod; u += v, v = u - (v<<1), a[i + j] = u % Mod; a[i + j +(L>>1)] = (v + Mod) % Mod; } if(flag == -1) for(int i = 0; i < len; i++) a[i] = a[i] * invN % Mod;}
0 0
- NTT
- NTT
- NTT DoCoMo
- NTT Docomo
- (模板)NTT
- HDU5829 ntt
- fft & ntt
- FFT-NTT
- ntt模板
- NTT板子
- fft/ntt
- ntt docomo 业务一览
- NTT DATA处女面
- 初识FFT和NTT
- BZOJ2179【FFT】【NTT】
- [UOJ34]FFT && NTT 模板
- 快速数论变换(NTT)
- 【NTT】 HDOJ 5322 Hope
- Android技能杂谈——如何优雅的处理控件的点击事件
- 1051. Pop Sequence (25)
- 看门狗定时器学习笔记
- Hello JSP!——指令元素之include篇
- 第8讲 Scala主构造器、私有构造器、构造器重载实战详解
- NTT
- ios的单元测试OCUnit以及更新了之后的XCTestCase
- Codeforces Round #315 (Div. 2)——C. Primes or Palindromes?
- ios bash 使用记录
- HDU 5371 Hotaru's problem(Manacher算法+贪心)
- Bing获取-获取Bing每日图片
- 编程规范(一 之kmalloc,fflush,fclose,char_init)
- Redis安装-ubuntu
- Cookie深度解析