【九度】【1507】不用加减乘除做加法
2015-06-25 11:45
190 查看
题目描述:
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
输入:
输入可能包含多个测试样例。
对于每个测试案例,输入为两个整数m和n(1<=m,n<=1000000)。
输出:
对应每个测试案例,输出m+n的值。
样例输入:
样例输出:
解题思路:^运算可以得到两个数无进位的和,&运算并左移可以得到两个数的进位,两个相当于再次相加,重复步骤,直到进位为0
#include <stdio.h>
int addNum(int a,int b){
int n,m;
do{
n=a^b;
m=(a&b)<<1;
a=n;
b=m;
}while(m!=0);
return a;
}
void main(){
int a,b;
while(scanf("%d%d",&a,&b)!=EOF){
printf("%d\n",addNum(a,b));
}
}
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
输入:
输入可能包含多个测试样例。
对于每个测试案例,输入为两个整数m和n(1<=m,n<=1000000)。
输出:
对应每个测试案例,输出m+n的值。
样例输入:
3 4 7 9
样例输出:
716
解题思路:^运算可以得到两个数无进位的和,&运算并左移可以得到两个数的进位,两个相当于再次相加,重复步骤,直到进位为0
#include <stdio.h>
int addNum(int a,int b){
int n,m;
do{
n=a^b;
m=(a&b)<<1;
a=n;
b=m;
}while(m!=0);
return a;
}
void main(){
int a,b;
while(scanf("%d%d",&a,&b)!=EOF){
printf("%d\n",addNum(a,b));
}
}
相关文章推荐
- Win8系统在多屏模式怎么切换?
- nginx反向代理和 ip重定向到域名配置
- 关于java设计模式的总结博客
- pppoe pppd连接不上问题
- Java String处理入门 - null或空值的判断处理
- Tomcat内存设置详解
- 一个初学者对于MVC架构的理解
- OC3-xml文件解析
- [LeetCode] LRU Cache
- CentOS 6.5安装使用docker
- 算法练习 -- DP C# 实现 全组合算法
- 【设计模式】策略模式Strategy_03
- 开源免费的天气预报接口API以及全国所有地区代码(国家气象局提供)
- 随心摘录(2)
- 链表和数组的区别在哪里
- 粗览Activiti Modeler操作和源代码
- CocoaPods停在Analyzing dependencies的解决方案
- nginx php解析过慢
- Stanford机器学习 -- Linear Regression with one variable
- SQL中IS NOT NULL与!=NULL的区别