#include<bits/stdc++.h>
using namespace std;
char a[100001],b[100001];
int c[100001];
int main(){
	cin>>a>>b;
	int al=strlen(a),bl=strlen(b);
	int cl=max(al,bl);
	for(int i=0;i<al/2;i++){
		swap(a[i],a[al-1-i]);
	}
	for(int i=0;i<bl/2;i++){
		swap(b[i],b[bl-1-i]);
	}
	int jw=0;
	for(int i=0;i<cl;i++){
		if(i>=al) a[i]='0';
		if(i>=bl) b[i]='0';
		c[i]=a[i]-'0'+b[i]-'0'+jw;
		
		jw=0; 
		cout<<c[i]<<" "; 
		
	}
	return 0;
}

string 减法

#include <bits/stdc++.h>
using namespace std;

string s1, s2;
int arr[607], brr[607], crr[608];

int main() {
	cin >> s1 >> s2;
	
	if (s1.size() != s2.size()) {
		if (s1.size() < s2.size()) {
			cout << '-';
			swap(s1, s2);
		}
	} else {
		if (s1 < s2) {
			cout << '-';
			swap(s1, s2);
		}
	}
	
	int lena = s1.size() - 1;
	for (int i = 0; i <= lena; i++) {
		arr[lena - i] = s1[i] - '0';
	}
	int lenb = s2.size() - 1;
	for (int i = 0; i <= lenb; i++) {
		brr[lenb - i] = s2[i] - '0';
	}
	
	int jinwei = 0;
	for (int i = 0; i <= lena; i++) {
		int x = arr[i];
		int y = (i <= lenb ? brr[i] : 0);
		int tmp = x - y - jinwei;
		if (tmp < 0) {
			tmp += 10;
			jinwei = 1;
		} else {
			jinwei = 0;
		}
		crr[i] = tmp;
	}
	
	int t = lena;
	while (t >= 0 && crr[t] == 0) {
		t--;
	}
	if (t < 0) {
		cout << 0;
	} else {
		for (int i = t; i >= 0; i--) {
			cout << crr[i];
		}
	}
	
	return 0;
}

string 加法

#include <bits/stdc++.h>
using namespace std;

string s1, s2;
int arr[607], brr[607], crr[608];

int main() {
	cin >> s1 >> s2;
	//倒叙存储
	int lena = s1.size() - 1;
	for (int i = 0; i <= lena; i++) {
		arr[lena - i] = s1[i] - '0';
	}
	int lenb = s2.size() - 1;
	for (int i = 0; i <= lenb; i++) {
		brr[lenb - i] = s2[i] - '0';
	}

	//模拟
	int lenc = max(lena, lenb);
	int carry = 0;
	for (int i = 0; i <= lenc; i++) {
		int sum = (arr[i] + brr[i] + carry);
		crr[i] = sum % 4;
		carry = sum / 4;
	}
	if(carry==1){
		crr[++lenc] = 1;
	}

	// 输出倒叙
	for (int i = lenc; i >= 0; i--) {
		cout << crr[i];
	}

	return 0;
}

0 条评论

目前还没有评论...