Precisión analógica A - A + B Problema II la adición de grandes números (de entrenamiento de invierno)

题目要求
Tengo un problema muy simple para usted. Dados dos enteros A y B, su trabajo es para calcular la suma de A + B.
Input
La primera línea de la entrada contiene un número entero T (1 <= T <= 20), que significa el número de casos de prueba. Luego siguen las líneas T, cada línea se compone de dos números enteros positivos, A y B. Tenga en cuenta que los números enteros son muy grandes, eso significa que no les debe procesar mediante el uso entero de 32 bits. Usted puede asumir la longitud de cada número entero no excederá 1000.
Salida
Para cada caso de prueba, que debe ser la salida dos líneas. La primera línea es el “Caso #:”, # significa el número del caso de prueba. La segunda línea es la una ecuación “A + B = Sum”, Sum significa el resultado de A + B. Nota hay algunos espacios int la ecuación. Salida de una línea en blanco entre dos casos de prueba.
Ejemplo de entrada
2
1 2
112233445566778899 998877665544332211
Muestra de salida
Caso 1:
1 + 2 = 3

2 Caso:
112233445566778899 998877665544332211 + = 1111111111111111110
grandes números porque la adición de datos demasiado grande para ser almacenado en un largo tiempo con el fin de llevar a la cadena, cada cadena de bits -'0 'para obtener la posición digital. El uso de dos matrices para almacenar dos entradas digitales y dos en la matriz correspondiente a cada uno de adición digital, sino también para determinar la condición de la carry es mayor que 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;
}
Publicado 38 artículos originales · ganado elogios 27 · vistas 3165

Supongo que te gusta

Origin blog.csdn.net/qq_45891413/article/details/105302822
Recomendado
Clasificación