精密アナログA - A + B問題II多数の付加(冬季訓練)

题目要求
私はあなたのための非常に単純な問題を抱えています。二つの整数A及びBを考えると、あなたの仕事は、A + Bにの合計を計算することである
入力の
入力の最初の行は、テストケースの数を意味する整数Tを(1 <= T <= 20)を含みます。次いで、Tラインは、次の各ラインは、整数手段はあなたが32ビットの整数を使用してそれらを処理しないことを、非常に大きいことが2つの正の整数であり、AおよびB通知から構成されています。あなたは、各整数の長さが1000超えないと仮定して
、出力を
使用すると、出力の2行はすべきで、各テストケースについて。最初の行は、「ケース#:」で、#は、テストケースの数を意味しています。第二行は、式「A + B =合計」であり、合計は、いくつかのスペースが式int型があるA + Bの注意の結果を意味します。出力2つのテストケースの間に空白行。
サンプル入力
2
1 2
112233445566778899 998877665544332211
サンプル出力
ケース1:
1 + 2 = 3

2ケース:
112233445566778899 998877665544332211 + = 1111111111111111110の
多数のデジタル位置を得るために、文字列、各ビット列を-'0」もたらすために長い長に格納することには大きすぎるデータ追加ため。2つのデジタル入力とデジタル加算のそれぞれに対応する配列内の2つを格納するために2つのアレイを使用するだけでなく、キャリーの条件は、10よりも大きいかを決定します。

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<queue>
#include<math.h> 
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
	
	int n,t;
	cin>>n;
	for(t=1;t<=n;t++)
	{
		char a[1111],b[1111];
		int c[1111];
		cin>>a>>b;
		int i,j,k=0;
		int m=0;
		for(i=strlen(a)-1,j=strlen(b)-1;i>=0&&j>=0;i--,j--)
		{
			int p=(a[i]-'0')+(b[j]-'0')+m;
			m=p/10;
			c[k++]=p%10;
		}
		while(i>=0)
		{
			int p=(a[i]-'0')+m;
			m=p/10;
			c[k++]=p%10;
			i--;
		}
		while(j>=0)
		{
			int p=(b[j]-'0')+m;
			m=p/10;
			c[k++]=p%10;
			j--;	
		}
		if(m)
		{
			c[k++]=m;
		}
		printf("Case %d:\n",t);
		cout<<a<<' '<<'+'<<' '<<b<<' '<<'='<<' ';
		for(int i=k-1;i>=0;i--)
			cout<<c[i];
		printf("\n"); 
		if(t!=n)printf("\n"); 
	}
	return 0;
}
公開された38元の記事 ウォン称賛27 ビュー3165

おすすめ

転載: blog.csdn.net/qq_45891413/article/details/105302822