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

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在线| 国产精品日本精品| 亚洲精品视频在线| 久久精品视频在线观看| 最新69国产成人精品视频免费| 一区二区三区欧美日韩| 亚洲一区日韩在线| 欧美freesex8一10精品| 韩国欧美一区| 欧美自拍偷拍午夜视频| 亚洲片在线观看| 久久精品免视看| 国产喷白浆一区二区三区| 在线视频精品一区| 91久久久久| 久久网站免费| 1204国产成人精品视频| 久久久久国产精品厨房| 亚洲美女视频网| 欧美美女操人视频| 99热在这里有精品免费| 亚洲成色www久久网站| 久久国产精品电影| 国产麻豆日韩| 国模精品一区二区三区色天香| 国产麻豆精品视频| 久久av红桃一区二区小说| 亚洲女女女同性video| 亚洲视频中文| 国产亚洲日本欧美韩国| 久久男人资源视频| 欧美mv日韩mv国产网站app| 亚洲精品一区二区三区婷婷月| 亚洲国产一区二区在线| 欧美日韩精品一区二区三区| 亚洲校园激情| 另类欧美日韩国产在线| 日韩一区二区精品| 中国成人黄色视屏| 韩国在线视频一区| 亚洲国产一区二区三区青草影视| 欧美日韩一区二区视频在线 | 一区二区欧美亚洲| 国内伊人久久久久久网站视频| 欧美激情国产精品| 国产一区二区久久精品| 亚洲精品视频啊美女在线直播| 国产麻豆精品theporn| 国产精品手机在线| 99精品视频免费在线观看| 国产午夜精品麻豆| 一区二区三区偷拍| 日韩午夜三级在线| 久久成人免费电影| 欧美亚洲在线观看| 欧美性片在线观看| 一区二区三区www| 在线视频你懂得一区二区三区| 开心色5月久久精品| 久久米奇亚洲| 一区二区三区高清不卡| 一区二区三区久久网| 欧美伦理视频网站| 日韩视频第一页| 妖精成人www高清在线观看| 欧美韩日亚洲| 99精品久久久| 香蕉尹人综合在线观看| 国产精品色婷婷| 亚洲欧美99| 久久综合精品国产一区二区三区| 一区二区三区在线不卡| 久久久久九九九九| 欧美激情欧美狂野欧美精品| 最新69国产成人精品视频免费| 欧美另类一区| 欧美在线视频一区二区三区| 裸体丰满少妇做受久久99精品| 亚洲国产毛片完整版| 欧美日韩hd| 麻豆精品精品国产自在97香蕉| 欧美激情aⅴ一区二区三区| 正在播放亚洲| 亚洲国产婷婷综合在线精品| 国产精品vip| 欧美成人福利视频| 欧美一级免费视频| 中日韩美女免费视频网站在线观看 | 欧美电影电视剧在线观看| 亚洲一区二区三区在线| 最新中文字幕一区二区三区| 国产欧美一区二区白浆黑人| 免费成人黄色片| 久久精品一区二区三区不卡牛牛| 日韩亚洲一区二区| 亚洲欧洲精品一区| 亚洲第一在线视频| 一区视频在线| 国产精品夜夜夜一区二区三区尤| 欧美大胆a视频| 欧美日韩国产高清视频| 另类专区欧美制服同性| 久久综合中文字幕| 欧美精品性视频| 国产精品高潮久久| 欧美天天影院| 国产午夜精品全部视频播放| 国产日产欧产精品推荐色 | 久久国产乱子精品免费女| 亚洲午夜性刺激影院| 欧美一区国产在线| 欧美寡妇偷汉性猛交| 国产精品高潮呻吟久久| 国产夜色精品一区二区av| 尤物yw午夜国产精品视频明星 | 国产精品欧美激情| 国产一区二区在线免费观看| 亚洲激情在线视频| 亚洲一区二区影院| 久久精品水蜜桃av综合天堂| 欧美xx69| 久久国产天堂福利天堂| 欧美视频免费| 亚洲大片在线| 亚洲一区免费看| 蜜臀av国产精品久久久久| 一区二区三区国产在线观看| 久久久99久久精品女同性| 欧美日韩一区在线观看视频| 合欧美一区二区三区| 欧美一级一区| 亚洲天堂男人| 欧美日韩一区二区在线视频| 久久久www成人免费精品| 欧美日韩免费一区二区三区| 在线播放不卡| 蜜臀av性久久久久蜜臀aⅴ| 亚洲欧美中文在线视频| 欧美午夜片在线观看| 一区二区国产精品| 日韩视频三区| 国产精品美女视频网站| 中日韩在线视频| 亚洲在线第一页| 国产精品久久一区二区三区| 亚洲综合精品四区| 亚洲综合导航| 黄色亚洲精品| 最近看过的日韩成人| 欧美精品一卡二卡| 亚洲欧美第一页| 久久久精品动漫| 亚洲电影在线| 亚洲视频免费在线观看| 国产精品综合视频| 欧美激情亚洲综合一区| 欧美激情亚洲精品| 欧美一区二区性| 久久久亚洲精品一区二区三区| 亚洲激情在线观看| 亚洲一区综合| 日韩亚洲欧美一区二区三区| 亚洲综合色自拍一区| 亚洲久久成人| 六月婷婷久久| 久久久久久9| 国产精品久线观看视频| 亚洲精品久久| 亚洲国产精品ⅴa在线观看| 99精品视频免费观看| 亚洲三级网站| 老色批av在线精品| 欧美成人一区二区三区在线观看| 国产精品久久夜| 日韩亚洲视频| 亚洲嫩草精品久久| 国产精品免费网站| 亚洲欧美第一页| 欧美一区不卡| 欧美自拍偷拍午夜视频| 午夜精品久久久久久久久久久久久| 免费在线亚洲| 亚洲精品专区| 亚洲视频一区二区在线观看| 欧美伦理a级免费电影| 99热这里只有精品8| 西瓜成人精品人成网站| 国内精品免费在线观看| 久久久久国色av免费看影院|