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

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>
            亚洲激情视频网| 欧美色中文字幕| 亚洲综合色激情五月| 麻豆精品在线视频| 欧美一区二区久久久| 久久―日本道色综合久久| 亚洲一区二区在线播放| 免费观看一级特黄欧美大片| 亚洲一级一区| 欧美日韩高清在线| 最新69国产成人精品视频免费| 国产一区二区三区久久| 亚洲一二三区在线观看| 日韩系列欧美系列| 欧美高清视频| 欧美激情网站在线观看| 亚洲承认在线| 久久免费精品日本久久中文字幕| 午夜精品影院在线观看| 欧美系列精品| 亚洲乱码国产乱码精品精可以看| 91久久久国产精品| 噜噜噜91成人网| 欧美激情精品久久久久久蜜臀| 国产综合精品| 久久久精品日韩| 卡一卡二国产精品| 在线观看一区| 欧美 亚欧 日韩视频在线| 欧美激情精品久久久久久| 亚洲国产综合91精品麻豆| 免费成人小视频| 欧美激情片在线观看| 99综合电影在线视频| 欧美裸体一区二区三区| 夜夜爽www精品| 亚洲一区二区三区视频| 国产美女精品视频| 久久精品国产v日韩v亚洲| 久久人人爽人人爽爽久久| 精品88久久久久88久久久| 久久综合伊人77777麻豆| 欧美激情在线狂野欧美精品| 亚洲精品综合久久中文字幕| 欧美日韩综合| 午夜日韩在线观看| 欧美成人精品激情在线观看| 91久久精品一区二区别| 欧美视频亚洲视频| 欧美在线国产精品| 亚洲国产高清在线观看视频| 亚洲一区二区动漫| 国产亚洲欧美aaaa| 欧美韩国日本综合| 亚洲在线一区二区| 蘑菇福利视频一区播放| 亚洲一区二区少妇| 狠狠色综合播放一区二区| 欧美国产日韩一区二区在线观看| 一区二区三区黄色| 免费亚洲一区二区| 亚洲综合三区| 亚洲国产精品va| 国产精品三上| 欧美成人午夜剧场免费观看| 亚洲欧美日韩成人高清在线一区| 免费av成人在线| 亚洲欧美中文日韩v在线观看| 永久555www成人免费| 欧美午夜电影在线| 久久综合精品国产一区二区三区| 99热在这里有精品免费| 免费看亚洲片| 久久精彩视频| 亚洲一区二区免费在线| 亚洲国产精品va在线看黑人| 国产精品久久久久一区二区三区| 久久综合九色九九| 亚洲欧美日韩一区二区| 亚洲美女毛片| 欧美大片一区| 久久嫩草精品久久久久| 亚洲在线观看| 99视频精品全部免费在线| 伊人影院久久| 国产色爱av资源综合区| 欧美三日本三级少妇三2023 | 中国女人久久久| 欧美大片在线观看一区| 欧美主播一区二区三区美女 久久精品人| 亚洲高清在线精品| 国产一区二区三区黄视频| 国产精品久久久久久久久果冻传媒| 美女黄色成人网| 久久久一区二区三区| 午夜精品在线| 亚洲欧美日韩精品一区二区| 一区二区三区日韩| 日韩视频免费大全中文字幕| 亚洲第一天堂无码专区| 欧美国产亚洲视频| 久久综合狠狠综合久久综合88| 香蕉视频成人在线观看| 先锋影音国产精品| 欧美一区二区成人| 欧美一区二区三区免费在线看| 亚洲午夜免费视频| 亚洲在线1234| 午夜精品电影| 欧美一区二区三区在线| 欧美淫片网站| 久久精彩免费视频| 久久青草欧美一区二区三区| 久久久之久亚州精品露出| 久久久久久久一区二区| 久久一区二区三区av| 美女91精品| 亚洲国产精品成人综合色在线婷婷| 美女福利精品视频| 亚洲观看高清完整版在线观看| 亚洲激情在线观看| 日韩视频在线一区| 亚洲一区免费视频| 久久国产免费看| 欧美成人精品福利| 欧美偷拍另类| 国产欧美一区二区三区在线老狼 | 亚洲日韩第九十九页| 99精品国产一区二区青青牛奶| 99亚洲伊人久久精品影院红桃| 亚洲婷婷国产精品电影人久久| 亚洲男女自偷自拍| 久久久久se| 欧美国产精品日韩| 一区二区av| 久久aⅴ乱码一区二区三区| 老司机免费视频久久| 欧美日韩国产综合网| 国产欧美三级| 亚洲欧洲在线播放| 午夜精品福利一区二区蜜股av| 久久久久亚洲综合| 91久久视频| 欧美在线999| 欧美日本不卡| 国产一区二区视频在线观看| 99xxxx成人网| 久久女同精品一区二区| 亚洲美女电影在线| 久久久免费精品视频| 欧美视频在线一区二区三区| 在线观看福利一区| 亚洲视频精品在线| 麻豆国产精品777777在线 | 欧美第一黄色网| 亚洲视频在线一区| 欧美大片在线观看| 国产性色一区二区| 中国亚洲黄色| 欧美激情国产日韩| 久久99在线观看| 国产精品成人一区二区网站软件 | 欧美大片网址| 午夜精品久久| 欧美三区在线观看| 亚洲欧洲精品一区二区| 久久精品国产综合精品| 日韩午夜三级在线| 久久在线免费| 国内免费精品永久在线视频| 亚洲免费视频网站| 亚洲精品国久久99热| 久久亚洲综合色| 国户精品久久久久久久久久久不卡| 亚洲私人影院| 亚洲精品免费一区二区三区| 老色批av在线精品| 伊人久久大香线蕉综合热线| 午夜精品一区二区三区四区 | 国产情侣一区| 亚洲免费在线精品一区| 亚洲日本一区二区三区| 毛片一区二区三区| 一区二区在线观看av| 久久久久久久综合色一本| 亚洲视频网站在线观看| 欧美日韩影院| 亚洲免费视频中文字幕| 一本色道久久综合| 欧美日韩欧美一区二区| 一区二区三区免费观看| 亚洲精品视频一区二区三区| 欧美国产在线观看| 亚洲伦理自拍| 亚洲巨乳在线| 欧美视频在线观看 亚洲欧| 亚洲一级在线观看| 亚洲一区二区在线看| 国产精品视频免费观看www| 欧美一区二区观看视频|