二进制?十进制!
二进制?十进制!
https://ac.nowcoder.com/acm/contest/11231/A
题目大意:
输入两个数A,B,求两数二进制形式以十进制相加后结果
首先进制转换(十->二)。
接着考虑像高进度的方法,将每一位相加,最后关心最高位大于个位数,多加一位。
#include <cstdio> #include <iostream> using namespace std; const int N = 10000000; int a, b, s[N], s1[N], j, j1, final, i, ans[N]; int main() { scanf("%d%d", &a, &b); i = a; //二进制转换 while(i) s[++j] = i % 2, i /= 2; i = b; while(i) s1[++j1] = i % 2, i /= 2; final = max(j, j1); int t = 0; for(int i = 1; i <= final; i++) { ans[i] = s[i] + s1[i] + t; t = ans[i] / 10; ans[i] %= 10; } if(t) ans[++final] = t; //最高位大于个位,将位数加一 for(int ii = final; ii >= 1; ii--) printf("%d", ans[ii]); printf("\n"); return 0; }