最近想寫一下多項式取模的模板,然而找不到模板題。於是上網找了個高精度除法題,寫完之後才發現高精度除法和多項式取模是不一樣的qaq。前者要求不能出現負數,為此某些位置可以暫時為0,將餘數拉到後面;而多項式取模則要求最高項一定要剩餘0。
於是我把程式隨便改了改,先扔在這兒,以後備忘。我寫的是實數(fft)的版本(其實我並不知道實數版本的多項式取模到底有什麼用)。
另外我還不知道有沒有寫錯,過了幾組手造的小資料就不管了……
code:
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
const
int maxn=1000000;
const
double pi=acos(-1.0);
struct complex
} ;complex operator+(complex a,complex b)
complex operator-(complex a,complex b)
complex operator*(complex a,complex b)
complex a[maxn];
complex b[maxn];
int rev[maxn];
int n,lg;
double f[maxn];
int g[maxn];
double ans[maxn];
double mod[maxn];
char s[maxn];
int h[maxn];
int ln,lm;
void dft(complex *a,double f)
dft(a,1.0);
dft(b,1.0);
if (rev) for (int i=0; ifor (int i=0; i1.0);
for (int i=0; idouble)n;
}void poly_rev(int m)
}int main()
多項式除法 取模
除法 取模 設 n 次多項式 f x 和 m 次多項式 g x 求 n m 次多項式 q x 和 m 1 次多項式 r x 滿足 f x g x q x r x 於是我們有 f frac g frac q frac r frac 兩遍同乘 x n x nf frac x mg frac x q fr...
Re 多項式除法 取模
emmm又是暫無 多項式求逆 還是跟之前一樣顧名思義 給定乙個多項式f x 請求出多項式q x 和r x 滿足f x q x g x r x r項數小於g,係數對998244353取模。先考慮乙個多項式的反轉操作 就是乙個多項式係數前後調換 定義這個反轉的操作下標加個 r 顯然fr x xnf 1 ...
多項式模板
檢查資料 input 61 2 3 4 5 6 1.ntt多項式求逆 include define maxn 2100005 define ll long long define mod 998244353 using namespace std int lg maxn r maxn w maxn ...