|字符串加法-进制转换|7-3 钱串子的加法 (20分)

模板请戳 :这里


#include <iostream>
#include <stack>
using namespace std;

stack<char>st;

void cnt(string& a, string& b) {


	int index_a = a.length() - 1;
	int index_b = b.length() - 1;
	int sum = 0;

	//从后往前,a和b一位位的相加
	while (index_a >= 0 || index_b >= 0|| sum != 0) {
	
		if (index_a >= 0) {
			if (isalpha(a[index_a])) {//>9
				sum += a[index_a] - 'a' + 10;
			}
			else {//<=9
				sum += a[index_a] - '0';
			}
			index_a--;
		}

		if (index_b >= 0) {
			if (isalpha(b[index_b])) {//>9
				sum += b[index_b] - 'a' + 10;
			}
			else {//<=9
				sum += b[index_b] - '0';
			}
			index_b--;
		}

		if (sum % 30 >= 10) {//>=10 字母
			//str.append(sum % 30-10+'a');
			//v.push_back('a'+sum % 30 - 10);
			//cout << (char)('a'+sum % 30 - 10) ;
			st.push('a'+sum % 30-10);
		}
		else {
			//str.append(sum % 30-'0');//<9
			//v.push_back('0'+sum % 30);
			//cout <<(char)( '0'+sum % 30);
			st.push('0' + sum % 30);
		}
		sum /= 30;
	}
	while (!(st.empty())) {
		cout << st.top();
		st.pop();
	}

}


int main() {
	string a, b;
	cin >> a >> b;
	cnt(a, b);



	return 0;


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值