SSL Linda 2021-03-12 21:05 采纳率: 0%
浏览 49
已结题

请各位帮忙看看,这道题我的代码哪里错了

1498.减法神童

时间限制:1000MS 内存限制:256000KB

题目描述

      贝贝不仅是位加法达人,还会计算减法!别误会,这个减法也不是一般的减法,数字的位数可能多达200位,一般人计算这么大的数字是很吃力的,于是大家都称贝贝为“减法神童”。
   
      现在我们编写一个程序,计算出两个数相减的结果,看看贝贝是否能回答出正确的答案。

输入

第1行是被减数a,第2行是被减数b。(a和b的位数都不为大于200位的正整数)

输出

一行,表示a-b的结果。

【输入样例1】
 8
 2

【输入样例2】
15
20
【输出样例1】
6

【输出样例2】
-5
#include<bits/stdc++.h>
using namespace std;
string s1,s2;
int a[211],b[211],c[211],g;
bool flag;
int main()
{
	cin >> s1 >> s2;
	int len1 = s1.size(),len2 = s2.size();

	if(len1 < len2)  {
	swap(s1,s2);
	swap(len1,len2);
	flag = 0;
	}
	int p = 0,q = 0;
	if(len1 == len2)
	{
		if(s1[p] < s2[q])
		{
			swap(s1,s2);
			flag = 0;
		}
		while(s1[p] == s2[q])
		{
			p++,q++;
			if(s1[p] < s2[q])
		{
			swap(s1,s2);
			flag = 0;
			break;
		}
		}
	}
		for(int i = 0;i < len1;i++)
	{
			a[211 - len1 + i] = s1[i] - 48;
	}
	for(int i = 0;i < len2;i++)
	{
			b[211 - len2 + i] = s2[i] -48;
	}
	for(int i = 211;i >= 1;i--)
	{
		if(a[i] - g >= b[i])
		{
			c[i] = a[i] - g - b[i];
			g = 0;
		}
		else
		{
			c[i] = 10 + a[i] - g - b[i];
			g = 1;
		}
	}
	int j = 1;
	while(j < 210 && c[j] == 0) j++;
	if(flag == 0)
	cout << "-";
	for(int i = j;i <= 210;i++)
	cout << c[i];
	return 0;
} 
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 onlyoffice编辑完后立即下载,下载的不是最新编辑的文档
    • ¥15 求caverdock使用教程
    • ¥15 Coze智能助手搭建过程中的问题请教
    • ¥15 12864只亮屏 不显示汉字
    • ¥20 三极管1000倍放大电路
    • ¥15 vscode报错如何解决
    • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
    • ¥15 python随机森林对两个excel表格读取,shap报错
    • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
    • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。