#include #include #define PI2 6.28318530717958647692 const int k = 18; const int m = (1 << 18); typedef double complex cmplx; cmplx C[1<<18]; cmplx w[1<<17]; void read_int(int *x){ char c=0; while(c<'0'||c>'9') c = getchar(); *x = c-'0'; c = getchar(); while(c>='0'&&c<='9') { *x *= 10; *x += c-'0'; c = getchar(); } } void write_int(int x){ int i; static char buf[12]; if(x==0){ puts("0"); return; } for(i=10; x; i--){ buf[i] = '0' + x % 10; x /= 10; } puts(buf+1+i); } unsigned minus(unsigned x) { int y = 1 << (31-__builtin_clz(x)); return (~x&(y-1))^y; } void fft(cmplx *A, int k){ int m = 1 << k; int u = 1; int v = m/2; int i, jh, j, je; for(i=k;i>0;i--){ for(jh=0;jh>= 1; } } void ifft(cmplx *A, int k){ int m = 1 << k; int u = m/2; int v = 1; int i, jh, j, je; for(i=1;i<=k;i++){ for(jh=0;jh>= 1; v <<= 1; } } void genw(int i, int b, cmplx z){ if(b == 0){ w[i] = z; } else { genw(i, b>>1, z); genw(i|b, b>>1, z*w[b]); } } int main(){ int l, mm, n, q; int i, j; const double arg = -PI2/m; for(i=1, j=m/4; j; i<<=1, j>>=1){ w[i] = cexp(I * (arg * j)); } genw(0, m/4, 1); read_int(&l); read_int(&mm); read_int(&n); for(i=0;i