快速乘 快速幂 输入输出挂模板

快速乘&&快速幂 

ll qc(ll x,ll y,ll mod)
{
    return (x*y-(ll)((long double)x/mod*y)*mod+mod)%mod;     
}
ll qpow(ll x, ll y, ll m){
	ll res = 1;
	res %= m;
	while (y){
		if(y & 1){
			res = qc(res, x, m);
		}
		y >>= 1;
		x = qc(x, x, m);
	}
	return res % m;
}

输入挂 

template <class T>
bool read(T & a){
	a = 0;
	int flag = 0;
	char ch;
	if((ch = getchar()) == '-'){
		flag = 1;
	}
	else if(ch >= '0' && ch <= '9'){
		a = a * 10 + ch - '0';
	}
	while ((ch = getchar()) >= '0' && ch <= '9'){
		a = a * 10 + ch - '0';
	}
	if(flag)a = -a;
	return true;
}
template <class T, class ... R>
bool read(T & a, R & ... b){
	if(!read(a))return 0;
	read(b...);
}

输出挂

template <class T>
bool out(T a){
	if(a < 0)putchar('-');
	if(a >= 10)out(a / 10);
	putchar(a % 10 + '0');
	return true;
}
template <class T, class ... R>
bool out(T a, R ... b){
	if(!out(a))return 0;
	out(b...);
}

 

 

posted @ 2019-07-31 19:15  correct  阅读(83)  评论(0)    收藏  举报