BZOJ 2179 快速傅利葉變換 高精度乘法

2022-04-06 20:37:42 字數 2539 閱讀 6395

time limit: 10 sec  memory limit: 259 mb

submit: 3108  solved: 1599

[submit][status][discuss]

給出兩個n位10進製整數x和y,你需要計算x*y。

第一行乙個正整數n。 第二行描述乙個位數為n的正整數x。 第三行描述乙個位數為n的正整數y。

資料範圍:

n<=60000

扔個模板

注意讀入字元轉換成係數 係數轉換成整數

#include #include 

#include

#include

#include

using

namespace

std;

const

int n=3e5+5

;inline

intread()

while(c>='

0'&&c<='9')

return x*f;

}const

double pi=acos(-1

);struct

vector

};typedef vector cd;

vector

operator +(vector a,vector b)

vector

operator -(vector a,vector b)

vector

operator *(vector a,vector b)

vector conj(vector a)

struct

fastfouriertransform

}void transform(cd *a,cd *omega)}}

void dft(cd *a,int

flag)

}void fft(cd *a,cd *b,int

m)}fft;

cd a[n],b[n];

intn,m,c[n];

char

s1[n],s2[n];

intmain()

fft 1880ms

#include #include 

#include

#include

#include

using

namespace

std;

const

int n=3e5+5

;inline

intread()

while(c>='

0'&&c<='9')

return x*f;

}const

double pi=acos(-1

);struct

vector

};typedef vector cd;

vector

operator +(vector a,vector b)

vector

operator -(vector a,vector b)

vector

operator *(vector a,vector b)

struct

fastfouriertransform

}void dft(cd *a,int

flag)}}

if(flag==-1) for(int i=0;in;

}void fft(cd *a,cd *b,int

m)}fft;

cd a[n],b[n];

intn,m,c[n];

char

s1[n],s2[n];

intmain()

遞推w的方法 fft 1260ms

當然了,用nnt也可以,然而輸給了常數

#include #include 

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;const

int n=3e5+5

;inline

intread()

while(c>='

0'&&c<='9')

return x*f;

}ll p=1004535809,mod=p;

ll pow(ll a,ll b,ll mod)

struct

numbertheoretictransform

g=3; }

void dft(ll *a,int

flag)}}

if(flag==-1

) }

void mul(ll *a,ll *b)

}fft;

intn,m,c[n];

char

s1[n],s2[n];

ll a[n],b[n];

intmain()

nnt 3728ms

bzoj 2194 快速傅利葉變換

請計算c k sigma a i b i k 其中 k i n 並且有 n 10 5。a,b中的元素均為小於等於100的非負整數。第一行乙個整數n,接下來n行,第i 2.i n 1行,每行兩個數,依次表示a i b i 0 i n 輸出n行,每行乙個整數,第i行輸出c i 1 5 3 1 2 4 1...

bzoj 3527 快速傅利葉變換

給出n個數qi,給出fj的定義如下 fj ii qj i j 2 i jq i qj i j 2令ei fi qi,求ei.第一行乙個整數n。接下來n行每行輸入乙個數,第i行表示qi。n 100000,0 qi 1000000000 n行,第i行輸出ei。與標準答案誤差不超過1e 2即可。5 400...

傅利葉變換與快速傅利葉變換

作為電子資訊專業的學生老說,這個不知道,或者理解不清楚,是十分不應該的,作為乙個學渣,有時候確實是理解不清楚的 1 首先離散傅利葉變換目的 簡單點說 就是將乙個訊號從時域變換到頻域 標準點說 將以時間為自變數的訊號 與 頻率為自變數的頻譜函式之間的某種關係變換 數學描述 對於 n點序列 其中自然對數...