当一个人很闲的时候...
  • 板块灌水区
  • 楼主_j_o_k_e_r_
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/8/17 12:27
  • 上次更新2024/8/17 12:33:51
查看原帖
当一个人很闲的时候...
1046145
_j_o_k_e_r_楼主2024/8/17 12:27

当一个人很闲的时候,用位运算做了加减乘除,不知道是不是正确的

long long plus_(long long a,long long b)//加
{
	if(!(a&b)) return a^b;
	return plus_(a^b,(a&b)<<1);
}
long long minus_(long long a,long long b)//减
{
	return plus_(a,-b);
}
long long times_(long long a,long long b)//乘
{
	if(!(a&(plus_(a,-1)))) a^=b^=a^=b;
	long long ad=a;
	if(b==1) return a;
	if(!b) return 0;
	long long k=1;
	while(plus_(k,k)<=b)
	{
		a=plus_(a,a);
		k=plus_(k,k);
	}
	return plus_(a,times_(ad,minus_(b,k)));
}
long long divided_by_(long long a,long long b)//除
{
	long long l=0,r=a;
	long long mid;
	while(l<=r)
	{
		mid=(plus_(l,r)>>1);
		long long ansa=times_(b,mid);
		long long ansb=times_(b,mid+1);
		if(ansa<=a&&ansb>a) return mid;
		if(ansb==a) return plus_(mid,1);
		if(ansa<a&&ansb<a) l=plus_(mid,1);
		else r=minus_(mid,1);
	}
}
2024/8/17 12:27
加载中...