PAT 1074 宇宙無敵加法器

題目連接ios

正常的按位相加便可bash

  1. 在相加以前將字符串長度補齊,方便運算。
  2. long long int 好像存不下21位10進制數,因此要把每一位當字符串處理,不要試圖用一個數去存儲相加的結果。
  3. 結果爲0的狀況要單獨考慮。
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
#include<vector>
#include <algorithm>
using namespace std;
int main() {
	string base;
	string a, b;
	cin >> base >> a >> b;
	string s1(base.length() - a.length(),'0');
	a = s1 + a;
	string s2(base.length() - b.length(), '0');
	b = s2 + b;
	
	vector<int>res;
	int base_int = 0;
	int carry = 0;
	for (int i = base.size() - 1; i >= 0; i--) {
		base_int = base[i] == '0' ? 10 : (base[i] - '0');
		res.push_back((a[i] + b[i] - '0' - '0'+ carry) % base_int);
		carry = (a[i] + b[i] - '0' - '0' + carry) / base_int;
		
	}
	if (carry != 0)
		res.push_back(1);
	long long int result = 0;
	reverse(res.begin(), res.end());

	int flag = 0;
	for (int i = 0; i < res.size(); i++) {
		if (res[i] != 0 || flag == 1) {
			flag = 1;
			cout << res[i];
		}
	}
	if (flag == 0) {
		cout << 0;
	}
	return 0;
}
複製代碼
相關文章
相關標籤/搜索