高精度乘法
vector<int>mul(vector<int>&A,int b) //记得最后在主函数输出时是倒着输出的!且要记着vector可以用[],如果数据类型为int的话。
{
//高精度乘法
vector<int>c;
int t=0;
for(int i=0;i<A.size();i++)
{
t+=A*b;
c.push_back(t%10);
t/=10;
}
while(t)
{
c.push_back(t%10);
t/=10;
}
return c;
}
快速幂 快速乘
LL qmul(LL a,LL b,LL p)//快速乘 ,LL 是 long long 类型别名
{
LL res=0; //注意此处初始化为0
while(b)
{
if(b&1) res=(res+a)%p;
a=(a+a)%p;
b>>=1;
}
return res;
}
LL qmi(LL a,LL b,LL p)
{
LL res=1;
while(b)
{
if(b&1) res=qmul(res,a,p); // 用快速乘来写快速幂
a=qmul(a,a,p);
b>>=1;
}
return res;
}
LL qmi(int a,int b,int p) //正常快速幂写法
{
LL res=1;
while(b)
{
if(b&1) res=(LL)res*a%p;
a=(LL)a*a%p;
b>>=1;
}
return res;
}