hpu1306 大数a+b和a-b


题目描述

给你两个数a和b,让你计算a和b的和或者差。

输入

有t组数据,每组数据输入一个正数a,接着输入一个符号('+'或者'-'),再输入一个正数b。

a和b的位数都小于100位。

输出

若是'+',输出两个数之和,若是'-',输出两数之差。

样例输入

4
12345 + 12345
12345 + 35
2345 - 12345
12 - 123

样例输出

24690
12380
-10000
-111

提示

注意:a和b很大,用int或者long long无法存储。

博文不足,模拟个水题练练代码;

#include
#include
#include
#include
#include
#define max_n 1010
using namespace std;

char str1[max_n],str2[max_n];
int a[max_n],b[max_n],str3[max_n],str4[max_n];

int main()
{
	int t;
	char ch;
	scanf("%d",&t);
	getchar();
	while(t--)
	{
		memset(a,0,sizeof(a));
		memset(b,0,sizeof(b));
		memset(str3,0,sizeof(str3));
		memset(str4,0,sizeof(str4));
		scanf("%s %c %s",str1,&ch,str2);
		int len1=strlen(str1);
		int len2=strlen(str2);
		for(int i=0;i=10 && i!=max(len1,len2)-1)
				{
					a[i]%=10;
					a[i+1]=1;
				}
				if(i==max(len1,len2)-1 && a[i]>=10)
				{
					a[i]%=10;
					a[len]=1;
					len++;
				}
			}
			for(int i=len-1;i>=0;i--)
				printf("%d",a[i]);
		}
		else
		{
			if(!strcmp(str1,str2))
			{
				printf("0\n");
				continue;
			}
			if(len1=0;i--)
				{
					if(a[i]!=0)
						flag=true;
					if(flag)
						printf("%d",a[i]);
				}
			}
			else
			{
				for(int i=0;i=0;i--)
				{
					if(a[i]!=0)
						flag=true;
					if(flag)
						printf("%d",a[i]);
				}
			}
		}
		printf("\n");
	}
	return 0;
}

你可能感兴趣的:(模拟)