青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

coreBugZJ

此 blog 已棄。

Hwh’s Problem, FZU 2011年3月月賽之 H, FZU 2017

Problem 2017 Hwh’s Problem

Accept: 11    Submit: 20
Time Limit: 5000 mSec    Memory Limit : 32768 KB

Problem Description

Polynomial is an expression of more than two algebraic terms, esp. the sum of several terms that contain different powers of the same variable(s).

For example, G( p ) = 7 + 6g^1 + 2g^2 + 0g^3 + 113g^4 is an expression.

Hwh is one “SB” ( short for “ShenBen” ) and he always love math!In this problem, you are expected to calculate the coefficients of the polynomial S(g) = G(p)^m, here m is an integer larger than zero.

For example, G(p) = 3 + 2g^1 , and m = 2, then S(g) = 4g^2 + 12g + 9, so the coefficients of S(g) are {4, 12, 9}; G(p) = 3 + 2g^1 , and m = 3, then S(g) = 8g^3 + 36g^2 + 54g + 27, so the coefficients of S(g) are { 8, 36, 54, 27 }.

The coefficients may be so large, so hwh wants to know the coefficients (mod 211812353).

Input

In the first line one integer T indicates the number of test cases. (T <= 1000)

For every case, two integers n and m in a single line, indicate the number of element of the G(p) and the value of m. (2 <= n <= 10^5, 1 <= m <= 50000, n * m <= 10^5)

Then one line has n integers Ki, indicates the i-th coefficient of G(p). (0 <= Ki <= 10^9)

Output

For each test case, output (n – 1)*m + 1 lines, the i-th (i >= 0) line output “[i] = ci”, where ci is the coefficient of g^i in S(g)

Output one blank line after each test case.

Sample Input

2
2 2
3 2
2 3
3 2

Sample Output

[0] = 9
[1] = 12
[2] = 4

[0] = 27
[1] = 54
[2] = 36
[3] = 8

Source

FOJ有獎月賽-2011年03月


全整數 FFT 加速整系數多項式乘法,不能僅僅套模板,需要對 FFT 有一點點理解。。。

1953ms 1796KB

  1 #include <iostream>
  2 #include <cstdio>
  3 
  4 using namespace std;
  5 
  6 template< int L, class T = intclass LT = long long >
  7 class  FFT
  8 {
  9 public : 
 10         FFT() {
 11                 p = -1;
 12         }
 13         void fft( T e[], int &m, int minL ) {
 14                 in( e, m, minL );
 15                 m = n;
 16                 fft();
 17                 out( e );
 18         }
 19         void ifft( T e[], int &m, int minL ) {
 20                 in( e, m, minL );
 21                 m = n;
 22                 ifft();
 23                 out( e );
 24         }
 25         T getP() {
 26                 return p;
 27         }
 28 
 29 public : 
 30         static int isPrime( T x ) {
 31                 T i;
 32                 if ( x < 2 ) {
 33                         return 0;
 34                 }
 35                 /* overflow !! */
 36                 for ( i = 2; (LT)i*<= x; ++i ) {
 37                         if ( x % i == 0 ) {
 38                                 return 0;
 39                         }
 40                 }
 41                 return 1;
 42         }
 43         static T powMod( T a, T b, T c ) {
 44                 T ans = 1;
 45                 a %= c;
 46                 while ( b > 0 ) {
 47                         if ( b & 1 ) {
 48                                 ans = ( (LT)ans * a ) % c;
 49                         }
 50                         a = ( (LT)a * a ) % c;
 51                         b >>= 1;
 52                 }
 53                 return ans;
 54         }
 55 
 56 private : 
 57         /* p is a prime number */
 58         int isG( T g, T p ) {
 59                 T p0 = p - 1, i;
 60                 for ( i = 1; (LT)i*<= p0; ++i ) {
 61                         if ( p0 % i == 0 ) {
 62                                 if ( (powMod(g,i,p)==1&& (i<p0) ) {
 63                                         return 0;
 64                                 }
 65                                 if ( (powMod(g,p0/i,p)==1&& (p0/i<p0) ) {
 66                                         return 0;
 67                                 }
 68                         }
 69                 }
 70                 return 1;
 71         }
 72         int rev_bit( int i ) {
 73                 int j = 0, k;
 74                 for ( k = 0; k < bit; ++k ) {
 75                         j = ( (j<<1)|(i&1) );
 76                         i >>= 1;
 77                 }
 78                 return j;
 79         }
 80         void reverse() {
 81                 int i, j;
 82                 T t;
 83                 for ( i = 0; i < n; ++i ) {
 84                         j = rev_bit( i );
 85                         if ( i < j ) {
 86                                 t = a[ i ];
 87                                 a[ i ] = a[ j ];
 88                                 a[ j ] = t;
 89                         }
 90                 }
 91         }
 92         void in( T e[], int m, int minL ) {
 93                 int i;
 94                 bit = 0;
 95                 while ( (1<<(++bit)) < minL )
 96                         ;
 97                 n = (1<<bit);
 98                 for ( i = 0; i < m; ++i ) {
 99                         a[ i ] = e[ i ];
100                 }
101                 for ( i = m; i < n; ++i ) {
102                         a[ i ] = 0;
103                 }
104                 if ( p < 0 ) {
105                         init( 21211812353 );
106                 }
107         }
108         // lim2 >= bit
109         void init( int lim2, T minP ) {
110                 T k = 2, ig = 2;
111                 int i;
112                 do {
113                         ++k;
114                         p = ( (k<<lim2) | 1 );
115                 } while ( (p<minP) || (!isPrime(p)) );
116                 while ( !isG(ig,p) ) {
117                         ++ig;
118                 }
119                 for ( i = 0; i < bit; ++i ) {
120                         g[ i ] = powMod( ig, (k<<(lim2-bit+i)), p );
121                 }
122         }
123         void fft() {
124                 T w, wm, u, t;
125                 int s, m, m2, j, k;
126                 reverse();
127                 for ( s = bit-1; s >= 0--s ) {
128                         m2 = (1<<(bit-s));
129                         m = (m2>>1);
130                         wm = g[ s ];
131                         for ( k = 0; k < n; k += m2 ) {
132                                 w = 1;
133                                 for ( j = 0; j < m; ++j ) {
134                                         t = ((LT)(w)) * a[k+j+m] % p;
135                                         u = a[ k + j ];
136                                         a[ k + j ] = ( u + t ) % p;
137                                         a[ k + j + m ] = ( u + p - t ) % p;
138                                         w = ( ((LT)w) * wm ) % p;
139                                 }
140                         }
141                 }
142         }
143         void ifft() {
144                 T w, wm, u, t, inv;
145                 int s, m, m2, j, k;
146                 reverse();
147                 for ( s = bit-1; s >= 0--s ) {
148                         m2 = (1<<(bit-s));
149                         m = (m2>>1);
150                         wm = powMod( g[s], p-2, p );
151                         for ( k = 0; k < n; k += m2 ) {
152                                 w = 1;
153                                 for ( j = 0; j < m; ++j ) {
154                                         t = ((LT)(w)) * a[k+j+m] % p;
155                                         u = a[ k + j ];
156                                         a[ k + j ] = ( u + t ) % p;
157                                         a[ k + j + m ] = ( u + p - t ) % p;
158                                         w = ( ((LT)w) * wm ) % p;
159                                 }
160                         }
161                 }
162                 inv = powMod( n, p-2, p );
163                 for ( k = 0; k < n; ++k ) {
164                         a[ k ] = ( ((LT)inv) * a[ k ] ) % p;
165                 }
166         }
167         void out( T e[] ) {
168                 int i;
169                 for ( i = 0; i < n; ++i ) {
170                         e[ i ] = a[ i ];
171                 }
172         }
173 
174         T a[ L ], g[ 100 ], p;
175         int n, bit;
176 };
177 
178 
179 #define  L  200009
180 typedef  long long Lint;
181 
182 FFT< L, int, Lint > fft;
183 
184 int a[ L ];
185 
186 int main() {
187         int td, n, m, t, i, p;
188         scanf( "%d"&td );
189         while ( td-- > 0 ) {
190                 scanf( "%d%d"&n, &m );
191                 for ( i = 0; i < n; ++i ) {
192                         scanf( "%d", a+i );
193                 }
194                 t = (n-1)*+ 1;
195                 fft.fft( a, n, t );
196                 p = fft.getP();
197                 for ( i = 0; i < n; ++i ) {
198                         a[ i ] = fft.powMod( a[ i ], m, p );
199                 }
200                 fft.ifft( a, n, n );
201                 for ( i = 0; i < t; ++i ) {
202                         printf( "[%d] = %d\n", i, a[ i ] );
203                 }
204                 printf( "\n" );
205         }
206         return 0;
207 }
208 


posted on 2011-04-05 22:37 coreBugZJ 閱讀(1170) 評論(0)  編輯 收藏 引用 所屬分類: ACM

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美视频中文一区二区三区在线观看 | 99这里只有精品| 国产精品综合| 国产精品日本精品| 国产伦精品一区二区三区视频孕妇 | 亚洲精品看片| 亚洲天堂av电影| 亚洲一区二区三区免费观看| 亚洲一区影院| 久久久久.com| 亚洲国产一区二区三区青草影视| 欧美插天视频在线播放| 亚洲高清三级视频| 中文精品视频一区二区在线观看| 亚洲欧美日本国产有色| 久久精品成人| 日韩一级精品视频在线观看| 精品91在线| 亚洲精品乱码久久久久久久久 | 欧美日韩三级视频| 国产午夜精品一区二区三区视频 | 久久久人成影片一区二区三区观看 | 蜜臀久久99精品久久久久久9 | 亚洲一二区在线| 久久综合精品国产一区二区三区| 亚洲二区精品| 先锋影音久久| 欧美日韩成人在线观看| 国产日韩欧美在线视频观看| 亚洲日本中文| 欧美一区在线视频| 亚洲黄色高清| 欧美亚洲三区| 欧美午夜精品理论片a级大开眼界 欧美午夜精品理论片a级按摩 | 欧美14一18处毛片| 国产精品色在线| 亚洲免费观看高清在线观看 | 亚洲无毛电影| 欧美激情日韩| 欧美在线观看视频一区二区| 欧美日韩中文字幕精品| 亚洲黄一区二区三区| 欧美一区二区三区在线| 亚洲日本欧美天堂| 嫩草影视亚洲| 伊人久久大香线蕉av超碰演员| 欧美在线视频免费播放| 夜夜爽99久久国产综合精品女不卡| 久久综合久久久| 国产欧美日本| 亚洲男人av电影| 99国产麻豆精品| 欧美日韩精品在线| 亚洲精一区二区三区| 欧美成人一区二区三区在线观看| 欧美一区不卡| 久久国产精品久久国产精品| 欧美午夜一区| 亚洲少妇一区| 亚洲卡通欧美制服中文| 欧美激情一二三区| 99riav国产精品| 亚洲麻豆一区| 欧美色欧美亚洲另类七区| 亚洲美女尤物影院| 模特精品在线| 免费亚洲网站| 日韩写真视频在线观看| 欧美国产专区| 欧美高清视频www夜色资源网| 亚洲国产日韩一区二区| 你懂的国产精品永久在线| 久久全球大尺度高清视频| 在线观看av不卡| 亚洲大片av| 欧美日韩亚洲一区在线观看| 亚洲天堂成人在线视频| 一本色道久久精品| 国产日韩在线一区| 久久字幕精品一区| 欧美成人视屏| 亚洲一区亚洲二区| 欧美资源在线观看| 又紧又大又爽精品一区二区| 欧美本精品男人aⅴ天堂| 欧美日本国产一区| 午夜一区在线| 久久久亚洲午夜电影| 日韩一级片网址| 亚洲欧美日韩综合国产aⅴ| 狠狠操狠狠色综合网| 91久久在线播放| 国产欧美在线看| 亚洲激情社区| 狠狠综合久久av一区二区小说| 欧美激情一区二区三区在线视频观看| 欧美精品一区二区精品网| 欧美一区亚洲一区| 欧美激情亚洲| 久久综合网hezyo| 欧美视频在线一区| 欧美91视频| 欧美视频中文一区二区三区在线观看 | 亚洲午夜91| 在线观看亚洲一区| 亚洲午夜伦理| 亚洲美女在线国产| 欧美亚洲在线播放| 国产精品99久久久久久久久久久久 | 亚洲伦理在线免费看| 欧美性猛交一区二区三区精品| 欧美色综合天天久久综合精品| 欧美一级专区| 欧美人交a欧美精品| 久久国内精品自在自线400部| 欧美~级网站不卡| 久久久国产精彩视频美女艺术照福利 | 亚洲美女中文字幕| 久久久精品动漫| 亚洲一区二区少妇| 久久久久久亚洲精品中文字幕 | 欧美大色视频| 亚洲最新合集| 在线观看欧美精品| 欧美怡红院视频| 午夜天堂精品久久久久| 欧美日韩国产色综合一二三四 | 欧美一级黄色网| 欧美大片免费观看| 欧美国产一区二区| 一区二区在线看| 久久精品一区二区| 久久婷婷国产综合尤物精品| 国产日韩欧美一区二区三区四区| 99精品免费网| 中日韩美女免费视频网站在线观看| 嫩模写真一区二区三区三州| 卡通动漫国产精品| 亚洲福利视频在线| 欧美成人三级在线| 亚洲精品久久久久久久久久久久 | 亚洲国产福利在线| 美女网站久久| 亚洲国产精品一区二区尤物区| 亚洲国产精品一区二区www| 欧美一区二区高清在线观看| 久久成人一区| 在线播放不卡| 欧美国产一区二区在线观看| 亚洲第一精品福利| 亚洲精品一区二区网址| 欧美美女操人视频| 亚洲视频在线一区观看| 久久不见久久见免费视频1| 黄色成人免费网站| 蜜臀久久99精品久久久久久9| 亚洲高清视频一区二区| 一本色道久久加勒比精品| 欧美午夜一区| 久久精品国产99国产精品澳门| 老司机一区二区| 一区二区av在线| 国产欧美精品国产国产专区| 久久精品国产精品| 欧美黄色大片网站| 亚洲欧美春色| 亚洲国产成人久久综合一区| 欧美高清在线视频| 午夜激情久久久| 亚洲影院色无极综合| 国内精品视频666| 美日韩在线观看| 妖精成人www高清在线观看| 久久精品夜色噜噜亚洲a∨| 亚洲二区免费| 国产精品久久国产精麻豆99网站| 一区二区三区免费在线观看| 国产精品欧美久久| 鲁大师影院一区二区三区| 99国产一区| 免费成人毛片| 欧美一区国产一区| 亚洲青色在线| 韩国在线一区| 国产精品日韩一区| 欧美激情a∨在线视频播放| 欧美一级久久久| 亚洲激情视频网站| 久久久久九九视频| 亚洲综合精品自拍| 亚洲精品一区在线观看| 黄色资源网久久资源365| 国产精品久久久久91| 欧美久久久久久蜜桃| 老司机一区二区| 久久久欧美一区二区| 欧美一区二区三区久久精品茉莉花 | 亚洲精品国产精品国自产观看| 国产目拍亚洲精品99久久精品| 欧美精品成人|