十进制快速幂模板

ll qpow(ll a,ll n){
	ll ans = 1;
	while(n){
		if(n & 1)	ans = ans * a % mod;
		a = a * a % mod;
		n >>= 1;
	}
	return ans;
}
ll qpow_decimal(ll a,char s[N]){  //求解a^s,把幂依次变成a^1,a^10,a^100,
	int len = strlen(s);
	ll ans = 1;
	for(int i=len-1;i>=0;i--){
		if(s[i] != '0')	ans = ans * qpow(a,s[i] - '0') % mod;
		a = qpow(a,10);
	}
	return ans;
}

 

posted @ 2019-10-09 22:16  月光下の魔术师  阅读(4)  评论(0)    收藏  举报