多项式快速幂
时间限制 : 60000 MS 空间限制 : 524288 KB
问题描述:
给一个n次多项式,求它的k次方。没关系,随手模一个998244353就行了。没关系,再随手模一个xm就行了。
输入格式:
第一行n,意义如上。
第二行n+1个数,a0,a1,…,an,分别是0,1,…,n次项系数。
第三行k,意义如上。
第四行m,意义如上。
输出格式
一行,b0,b1,…,bm-1,分别是0,1,…,m-1次项系数。
样例输入
1
1 1
5
2
样例输出
1 5
提示
样例解释:
(1+x)5
=1+5x+10x2+10x3+5x4+x5
≡1+5x (mod x2)
数据范围:
n,m<=100000
k<=1018
求逆元和exp的时候要使用牛顿迭代。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<complex>
#define ll long long
using namespace std;
template <typename T>
inline void _read(T& x){
char t=getchar();bool sign=true;
while(t<'0'||t>'9')
{
if(t=='-')sign=false;t=getchar();}
for(x=0;t>='0'&&t<='9';t=getchar())x=x*10+t-'0';
if(!sign)x=-x;
}
const int p=998244353;
const int g=3;
int mont(int x,int y){
ll ANS=1;