快速幂,二分,三分模板

//快速幂
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;
	}
}

猜你喜欢

转载自blog.csdn.net/red_red_red/article/details/83687219
今日推荐