链接:https://ac.nowcoder.com/acm/contest/19306/1010
来源:牛客网
给定两个十进制整数 : A,B
你需要把它们的二进制形式以十进制的运算法则相加输出结果。
例如:
A=3,B=2 的时候,A 的二进制表示是 : 11 , B 的二进制表示是 10 ,你需要输出答案为 : 21
#include<iostream>
using namespace std;
double fun(int x)//做了一个函数因为这里有a,b复用
{
int bin,temp=0;
double i = 1.0, j = 0.0;
while (x != 0) {
bin = x % 2;//用3举例这里做完是1第二次为1
x = x / 2;//x为1但是循环条件结束是x=0所以还会做一次循环这样变成0然后结束
j = j + i * bin;//除以2然后倒过来加上去,第一次的时候j是0+1*1是1第二次 j=1+10*1
i = i * 10;//位数变化,i变为10
}
return j;//返回11
}
int main()
{
int a, b;
cin >> a >> b;
printf("%.lf", fun(a) + fun(b));
}
我们这边用的计算方法是除以2求余然后反过来排列就是一个数的二进制数。
如果还有不会的小伙伴私信我我给你详细解答。