C++位运算2AC8WA
  • 板块P1001 A+B Problem
  • 楼主nUII
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/8/11 10:52
  • 上次更新2024/8/11 11:57:28
查看原帖
C++位运算2AC8WA
1414002
nUII楼主2024/8/11 10:52
#include <bits/stdc++.h>
using namespace std;
bool ac[29],bc[29];
int main()
{
	long long a,b;
	cin>>a>>b;
	stack<bool> at,bt;
	while(a)
	{
		at.push(a%2);
		a/=2;
	}
	int i=0;
	while(!(at.empty()))
	{
		bool o=at.top();
		ac[i]=o;
		i++;
		at.pop();
	}
	while(b)
	{
		bt.push(b%2);
		b/=2;
	}
	i=0;
	while(!(bt.empty()))
	{
		bool p=bt.top();
		bc[i]=p;
		i++;
		bt.pop();
	}
	if(a<0)
	{
		ac[28]=1;
	}
	if(b<0)
	{
		bc[28]=1;
	}
	bool c=0;
	for(int i=0;i<29;i++)
	{
		if(i==28)
		{
			bc[i]|=ac[i];
		}
		else
		{
			if(ac[i]&&bc[i])
			{
				if(c)
				{
					c=1;
				}
				else
				{
					c=1;
					~bc[i];
				}
			}
			else
			{
				if(ac[i]^bc[i])
				{
					if(c)
					{
						c=1;
						bc[i]=0;
					}
					else
					{
						bc[i]=1;
					}
				}
				else
				{
					if(c)
					{
						bc[i]=1;
						c=0;
					}
					else
					{
						bc[i]=0;
					}
				}
			}
		}
	}
	int sum=0;
	for(int i=0;i<29;i++)
	{
		if(bc[i])
		{
			if(i==0)
			{
				sum+=1;
			}
			else
			{
				int y=2;
				for(int j=0;j<i-1;j++)
				{
					y*=2;
				}
				sum+=y;
			}
		}
	}
	cout<<sum;
	return 0;
}

求错因

2024/8/11 10:52
加载中...