20pts求助!
  • 板块P1001 A+B Problem
  • 楼主ggpw_XNW
  • 当前回复10
  • 已保存回复10
  • 发布时间2024/8/14 13:43
  • 上次更新2024/8/14 15:32:04
查看原帖
20pts求助!
1025109
ggpw_XNW楼主2024/8/14 13:43

刚学OI 1ms1ms 的萌新写的二进制加法

#include<bits/stdc++.h>
using namespace std;
int n , m;
string s1 , s2;
int a[100005] , b[100005] , c[100005] , ans , len;
int main(){
	cin >> n >> m;
	while(n){
		s1 += (n % 2 + '0');
		n /= 2;
	}
	while(m){
		s2 += (m % 2 + '0');
		m /= 2;
	}
	for(int i=1;i<=s1.size();i++){
		a[i] = s1[s1.size()-1] - '0';
	}
	for(int i=1;i<=s2.size();i++){
		b[i] = s2[s2.size()-1] - '0';
	}
	for(int i=1;i<=max(s1.size(),s2.size());i++){
		c[i] += a[i] + b[i];
		c[i+1] += c[i] / 2;
		c[i] %= 2;
	}
	len = max(s1.size(),s2.size());
	while(c[len+1]){
		len++;
		c[len+1] += c[len] / 2;
		c[len] %= 2;
	}
	for(int i=1;i<=len;i++){
		long long tmp = 1 << (i - 1);
		ans += c[i] * tmp;
	}
	cout << ans;
	return 0;
}
2024/8/14 13:43
加载中...