日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

51nod 1172 Partial Sums V2 卡精度的任意模数FFT

發(fā)布時間:2024/4/17 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 51nod 1172 Partial Sums V2 卡精度的任意模数FFT 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

卡精度的任意模數fft模板題……
這道題隨便寫個表就能看出規(guī)律來(或者說考慮一下實際意義),反正拿到這題之后,很快就會發(fā)現(xiàn)他是任意模數fft模板題.
然后我就去網上抄了一下板子……
我打的是最土的任意模數fft,就是fft7次的那種……(好像有很多方法的樣子……)
這種任意模數fft方法見http://blog.csdn.net/l_0_forever_lf/article/details/52886397
這道題的具體做法見http://blog.csdn.net/qq_33229466/article/details/78837522
這種方法的思想就是:
  I.既然出題人給出了任意模數的多項式乘法,那么常規(guī)ntt肯定是不行
  II.既然他取模,那數會很大,會炸精,常規(guī)的fft也不行
  III.既然直接乘會炸精,那我們就把數變小,多跑幾次也沒關系
(IV.感覺加了一維卷積,有種這種方法很妙,可以繼續(xù)擴展的感覺,但是很模糊,也說不具體)
本著這種思路,我們逆變換的時候,不能在點值表達式直接操作,最后一遍回去,因為這樣效果和沒有在一開始把數縮小一樣,會炸精.
最后說一下這道題的坑點:如果你不預處理復數,你會炸精.
好像有的人沒有預處理,但是用了long double,就沒有被卡……
似乎cmath庫里有標準庫也有類庫,而且有的函數兩者并不都具有,但是最坑爹的一點是對于sin,cos等函數,cmath標準庫的精度大于cmath類庫……(這只是我經過親身試驗做出的推測)
反正預處理就沒有這些破事……

#include <cmath> #include <cstdio> #include <cstring> #include <complex> #include <algorithm> typedef long long LL; typedef double db; typedef std::complex<db> cd; const int N=200010; const db Pai=acos((db)-1); const int P=1000000007; cd a1[N],b1[N],a2[N],b2[N],c1[N],c2[N],c3[N],w1[N],w2[N]; int rev[N],len; int ai[N],bi[N],ans[N],ni[N]; inline void fft(cd *C,int opt,cd *wn){register int i,j,k;cd temp;for(i=1;i<len;++i)if(rev[i]>i)std::swap(C[i],C[rev[i]]);for(k=2;k<=len;k<<=1){for(i=0;i<len;i+=k){for(j=0;j<(k>>1);++j){temp=C[i+j+(k>>1)]*wn[len/k*j];C[i+j+(k>>1)]=C[i+j]-temp;C[i+j]+=temp;}}}if(opt==-1){db inv=1./len;for(i=0;i<len;++i)C[i]*=inv;} } inline void Mul(int *a,int *b,int *c,int n){len=1;while(len<n)len<<=1;int i,sqr=sqrt(P);cd temp;for(i=1;i<len;++i)rev[i]=(rev[i>>1]>>1)|((i&1)?(len>>1):0);for(i=0;i<len;++i){w1[i]=cd(std::cos(2.*Pai/len*i),std::sin(2.*Pai/len*i));w2[i]=cd(std::cos(-2.*Pai/len*i),std::sin(-2.*Pai/len*i));}for(i=0;i<len;++i){a1[i]=ai[i]/sqr,b1[i]=ai[i]%sqr;a2[i]=bi[i]/sqr,b2[i]=bi[i]%sqr;}fft(a1,1,w1),fft(b1,1,w1),fft(a2,1,w1),fft(b2,1,w1);for(i=0;i<len;++i){c1[i]=a1[i]*a2[i];c2[i]=a1[i]*b2[i]+a2[i]*b1[i];c3[i]=b1[i]*b2[i];}fft(c1,-1,w2),fft(c2,-1,w2),fft(c3,-1,w2);for(i=0;i<len;++i)c[i]=((LL)(round(c1[i].real()))%P*sqr%P*sqr%P+(LL)(round(c2[i].real()))%P*sqr%P+(LL)(round(c3[i].real()))%P)%P; } int main(){int n,k,i;scanf("%d%d",&n,&k);for(i=0;i<n;++i)scanf("%d",&ai[i]);bi[0]=1;for(i=1;i<n;++i)bi[i]=(LL)bi[i-1]*(k+i-1)%P*(i==1?ni[i]=1:ni[i]=(-(LL)(P/i)*ni[P%i]%P+P)%P)%P;Mul(ai,bi,ans,n<<1);for(i=0;i<n;++i)printf("%d\n",ans[i]);return 0; }

?

轉載于:https://www.cnblogs.com/TSHugh/p/8490076.html

總結

以上是生活随笔為你收集整理的51nod 1172 Partial Sums V2 卡精度的任意模数FFT的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧洲一级片 | 丁香四月婷婷 | 久久综合一区二区三区 | caoprom超碰 | 偷拍亚洲色图 | 亚洲日本中文 | 中文字幕人妻色偷偷久久 | 国产性猛交普通话对白 | 人人草人人 | 国产中文字幕久久 | 久久综合久久网 | 天天操天天插天天射 | se综合 | 亚洲综合成人亚洲 | 欧美特一级片 | 亚洲永久无码精品 | 99插插插| 尤物最新网址 | 婷婷色网站| 亚洲青草 | 无码播放一区二区三区 | av成人免费在线 | 新天堂在线 | 香蕉视频影院 | 国产精品亚洲天堂 | 激情五月综合色婷婷一区二区 | 九九精品免费视频 | 不卡在线一区二区 | 午夜激情啪啪 | 日本三级中文 | 在线 色 | 日日干日日爽 | 日本免费一区二区视频 | 在线看黄色网址 | 欧美性一区| 亚洲av无码精品色午夜果冻不卡 | 中文字幕av免费在线观看 | 日韩午夜在线 | 91久久精品日日躁夜夜躁国产 | 亚洲一区二区三区午夜 | 午夜剧场免费观看 | 嫩草午夜少妇在线影视 | 国产精品国产三级国产专播精品人 | 国模精品视频一区二区 | 国产超碰人人模人人爽人人添 | 成年人免费观看视频网站 | 五月天激情婷婷 | 亚洲AV综合色区无码国产播放 | 69xxxx国产| 香蕉国产精品 | 国产成人一区在线观看 | www.18av| av私库| 91夫妻论坛| 日韩亚洲欧美精品 | 国产精品黄视频 | 9色在线 | 少妇久久久久久 | 五月天六月婷 | 成人av高清在线观看 | 猛男大粗猛爽h男人味 | 黄视频网站免费看 | 精品久久91| 无码免费一区二区三区免费播放 | www.sesehu.com| 综合久久精品 | 日本一级三级三级三级 | 射婷婷 | 欧美在线一区二区三区四区 | 日日夜夜精品免费 | 都市激情 自拍偷拍 | 欧美精品午夜 | 极品白嫩少妇无套内谢 | 中文字幕欧美激情 | 久久99深爱久久99精品 | 国产又粗又爽视频 | 99久久久无码国产精品性色戒 | 白石茉莉奈番号 | 日本中文字幕在线视频 | 精品熟妇一区二区三区 | 黄色录像片子 | 九月婷婷| 黄色在线视频网址 | 久久久久99精品 | 久久婷婷六月 | 国产精品久久久久不卡 | 伊人影院在线观看 | 5个黑人躁我一个视频 | 免费在线观看亚洲 | 国产乱淫av一区二区三区 | 久久亚洲国产成人精品性色 | 天天透天天操 | 成人精品一区二区三区视频 | 午夜小网站| 一级草逼片 | 人人干网站 | 国产福利免费在线观看 | 深夜国产在线 | 色综合天 |