洛谷 P1001 A+B Problem
? 解题记录 ? ? 洛谷 ?    2017-07-28 22:31:30    361    1    0

题目描述

输入两个整数a,b,输出它们的和(|a|,|b|<=10^9)。 注意 1、pascal使用integer会爆掉哦!

2、有负数哦!

3、c/c++的main函数必须是int类型,而且最后要return 0。这不仅对洛谷其他题目有效,而且也是noip/noi比赛的要求!

好吧,同志们,我们就从这一题开始,向着大牛的路进发。

“任何一个伟大的思想,都有一个微不足道的开始。”

输入输出格式

输入格式:

 

两个整数以空格分开

 

输出格式:

 

一个数

 

输入输出样例

输入样例#1:
20 30
输出样例#1:
50

标程

 

        闲得无聊,写了一个不用加号的加法,实测比普通加法慢两倍。主要思想就是利用a ^ b加计算,(a & b) << 1进行一次进位。这样就可以递归处理。但是为了时间我还是用了while。

 

#include<cstdio>
using namespace std;

int plus(int a, int b) {
	int carry = b;
	while(carry) {
		carry = (a & b) << 1;
		a = a ^ b;
		b = carry;
	}
	return a;
}

int main() {
	int a, b;
	scanf("%d%d", &a, &b);
	printf("%d", plus(a, b));
} 

 

上一篇: 洛谷P1525 关押罪犯

下一篇: BZOJ2199 [Usaco2011 Jan]奶牛议会

361 人读过
立即登录, 发表评论.
没有帐号? 立即注册
0 条评论
文档导航