PAT B inigualable sumador 1074 /// universo cadena de serpiente analógicas

gente de la tierra acostumbrados a utilizar un número decimal, y el valor predeterminado es cada dígito decimal. En la estrella PAT gente que cuelga mundo abierto donde cada banda es diferente para cada dígito. Este número mágico se llama "el número de PAT." Cada estrella PAT que deben memorizar los dígitos en la lengüeta, como" ...... 0527" dice que el número hexadecimal poco menos significativo es 7, los dos primeros son números binarios, N ° 3 es 5 número hexadecimal, la primera 4 es un número decimal, y así sucesivamente. Cada bit es binario 0 o d (decimal), o un número entero en el intervalo de rango de [2,9]. En teoría, esto debería ser incluido en la tabulación número infinito de dígitos, pero la salida aplicación práctica, PAT protagonizada por que por lo general sólo necesita recordar lo suficiente antes de 20, después de que por defecto es 10 decimal.
En un sistema digital de este tipo, incluso una simple operación de suma se vuelve simple. Por ejemplo, corresponde a una pestaña en "0527", la forma de calcular "6203 + 415" media? En primer lugar hemos calculado el bit más bajo: 3 + 5 = 8; 7 porque el bit menos significativo es binario, por lo que tenemos 1 y un acarreo. Bit 2 es: 1 + 0 + 1 (acarreo) = 2, porque este bit es binario, por lo que tenemos 0 y un acarreo. Bit 3: 4 + 2 + 1 (carry) = 7; 5 porque este bit es un decimal, por lo que obtenemos 2 y un acarreo. Los cuatro primeros son: 6 + 1 (acarreo) = 7; porque este bit es un decimal, por lo que tenemos 7. Por último, se obtiene: 6203 + 415 = 7201.

Input formato:
entrada de N bits primero dar una pestaña en la primera fila (0 <N ≤ 20), que termina con un retorno de carro. Posteriormente dos filas, cada fila se da no más de un número de N bits no negativo de PAT.
Formato de salida:
PAT de salida y dos números en una fila.

de entrada de la muestra:
30 527
06.203 mil
415
de muestra de salida:
7201

Ideas: Los dos primeros números que se añaden a seguir la pestaña bits de acolchados plus 0, a continuación, desde el extremo de cabeza de una diferente de la suma binaria. Por último, si el equipaje de equipaje es 1, indicando que iban a entrar en el último bit es 1 frente al relleno. Si el anterior no son de salida antes de que la respuesta final es 0, entonces detectado un número mayor que cero, hasta que encuentra este número.

#include <iostream>
#include <string>
using namespace std;
int main()
{
	string s, s1, s2, ans;
	int carry = 0, flag = 0;
	cin >> s >> s1 >> s2;
	ans = s;
	string ss1(s.length() - s1.length(), '0'); //前面加0补齐
	s1 = ss1 + s1;
	string ss2(s.length() - s2.length(), '0');
	s2 = ss2 + s2;
	for (int i = s.length() - 1; i >= 0; i--)
	{
		int mod = s[i] == '0' ? 10 : (s[i] - '0');
		ans[i] = (s1[i] - '0' + s2[i] - '0' + carry) % mod + '0';
		carry = (s1[i] - '0' + s2[i] - '0' + carry) / mod;
	}
	if (carry != 0) ans = '1' + ans;
	for (int i = 0; i < ans.size(); i++) //如果前面是0,则不输出,当出现一个大于0的数字时,输出全部
	{
		if (ans[i] != '0' || flag == 1)
		{
			flag = 1;
			cout << ans[i];
		}
	}
	if (flag == 0) cout << 0; //flag=说明什么都没输出,则最后输出一个0
	return 0;
}

Resumen: Aquí aprendido no a la salida de la cadena antes del número 0

int flag = 0;
for (int i = 0; i < ans.size(); i++)
	{
		if (ans[i] != '0' || flag == 1)
		{
			flag = 1;
			cout << ans[i];
		}
	}

En un primer indicador es 0, por lo que sólo antes de la declaración juicio del juez ||. Si usted ha estado en frente de una cadena es 0, entonces la sentencia if no ha ejecutado hasta que no son cero digital. Y en este momento el indicador se establece en 1, indicando si es o no 0 respaldo digital a pleno rendimiento.

Publicados 101 artículos originales · ganado elogios 1 · vistas 1965

Supongo que te gusta

Origin blog.csdn.net/weixin_43318827/article/details/105253592
Recomendado
Clasificación