您的位置:首页 > 其它

【BZOJ1000】【POJ1000】【HDU1000】【Vijos P1000】A+B Problem

2014-09-26 14:27 381 查看
A+B Problem ,全世界除 "hello, world" 和 POJ3800/3801... 外最经典的信息学题目,没有之一!

但是同样是一道题,要求在代码中不出现“+”、“-”、“*”、“/”、“%”五种运算符,我们又能怎样解决?

枚举每一位,用变量 t 记录A和B在这个位的状态和之前是否有进位,并用位运算更新答案。

Pascal的同学们请路过,祝P党早日转C++!

A+B without "+" "-" "*" "/" "%" C++代码:
#include <cstdio>
#include <iostream>
using namespace std;
int a,b,c;
int main()
{
cin>>a>>b;
for(int i=1,t;i<=1<<29;i<<=1)
{
t=1;
if(a&i)t<<=1;
if(b&i)t<<=1;
if(c&i)t<<=1;
switch(t)
{
case 2:	c|=i; break;
case 4:	c|=i<<1; c=~c; c|=i; c=~c; break;
case 8:	c|=i; c|=i<<1; break;
}
}
cout<<c<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: