1. 程式人生 > >快速冪,二分,三分模板

快速冪,二分,三分模板

//快速冪
long long  Mood(long long a,long long b) {
	long long ans=1;
	a%=Mod;
	while(b) {
		if(b&1)//取二進位制最後一位 ,如果是一就進行下一步,是0 就跳過這一步
			ans=ans*a%Mod;
		b=b>>1;//b右移一位
		a=a*a%Mod;
	}
	return ans;
}
//二分
while(R>L) {
	int M=(L+R)>>1;//求中間值
	if(A[M]==x)
		return 1;//直接退出
	else if(A[M]>x)
		R=M-1;
	else
		L=M+1;
}
if(A[L]==x)//判斷最後的資料是否有解
	return 1;
else
	return 0;
//三分
while((r-l)>=0.0000001) {
	double tmp = (r-l)/3;//所要求區間的三分之一長度
	lm = l + tmp;
	rm = r - tmp;
	if(dis(lm) <= dis(rm)) {//注意捨棄那個部分
		r = rm;
	} else {
		l = lm;
	}
}