Donghua Universidad 2020 equipo PubMed DO sujetos a cuota de respuesta - artículos Avanzados (33)

33 palíndromo

Autor: ZhouMingLiang tiempo límite: 10S capítulos: matriz unidimensional

Descripción del problema:

Un día, obviamente, hacer la tarea de matemáticas, se encontró con un grupo de figuras muy interesantes. Por ejemplo 1,11,121,1331 y así sucesivamente. Se encontró que estas figuras son simétricas, es decir, si usted lee estos números de izquierda a derecha o de derecha a izquierda y leer, leen los números son los mismos. Así que, obviamente puse este descubrimiento saber a su padre. Obviamente padre es un experto en matemáticas, que sin duda ha sido estudiado mucho para este tipo de digital, dijo claramente: "Estos son los palíndromo, es un fenómeno digital especial, que estas cifras son lados izquierdo y derecho simétricos Por ejemplo: cerca de 121 simetría bilateral, simétrico respecto al 1331 es "obviamente, creo que es divertido, a continuación, se le preguntó a su padre, y qué tipo de cosas divertidas palíndromo-relacionado, obviamente, padre enseñó entonces, evidentemente, una clase. método, que es un número entero de arbitraria, después de algunos cálculos, se puede obtener un palíndromo. Este método es el siguiente: En primer lugar, por ejemplo, le dan un número 19, y luego lo puso en la posición más baja y el intercambio más alta (si hay más bits, los altos tiempos y bajos tiempos de intercambio ...), lo consigue en el número de orden inverso 91, a continuación, el número dos la adición, es decir, 19 + 91 = 110, obtenemos 110, desde 110 no es un número palíndromo, así que continúe con el paso anterior para 110 + 11 = 121, y ahora obtenemos un palíndromo 121. De esta manera, podemos obtener un palíndromo con un entero relacionados. Evidentemente es muy inteligente, rápidamente dominado este método, pero también encontró un problema que a veces calcular un palíndromo, es necesario repetir los pasos anteriores tantas veces, lo que hace que sea obviamente muy preocupado. Por lo que recurrió a usted y pedirle que le ayudara a escribir un programa para completar el proceso de búsqueda de más palíndromo por un programa.

Es evidente que la cuestión se reduce a: darle un método entero mediante la búsqueda palíndromo descrito anteriormente, para obtener un palíndromo, y la salida del proceso de solución. Asegúrese de que los datos de entrada es menor que 2 ^ 31 palíndromo

Introduzca una descripción:

Usted escribe procedimientos requieren la lectura de los datos de prueba desde el dispositivo de entrada estándar como datos de entrada se escribe el programa. Estándar de dispositivos de entrada múltiples conjuntos de datos de prueba, cada conjunto de datos de prueba sólo una fila, cada fila tiene un número entero n (10≤n≤10000), que requiere que el palíndromo entero. Cuando n = 0, indica el final de la entrada. No hay una línea en blanco entre cada grupo de prueba y los datos de prueba posterior, los datos de las pruebas de la primera serie de delante y detrás del último conjunto de datos de prueba son también las líneas en blanco no.

Descripción Salida:

Para cada conjunto de datos de prueba, se escribe programa requiere para calcular un conjunto de resultado del cálculo correspondiente, y da salida a los datos que el programa se escribe resultados de la operación de este grupo se escriben secuencialmente al dispositivo de salida estándar. resultado de la operación Palindrome de una o más filas cada proceso de solución, hasta que el palíndromo fecha determinada. Formato cada fila sigue a + b = c, donde a es el número original, b es que después de un número de intercambio, c es a + b, resultados, consulte el formato detallado de la salida de muestra. Cada resultado de la operación no es ningún filas vacías entre un conjunto de resultados de cálculo al mismo, el primer conjunto de resultados del cálculo, y el último grupo de los resultados del cálculo anterior más tarde sin líneas en blanco. Nota: En general, el dispositivo de salida de visualización estándar.

Ejemplo de entrada:

88
0

Resultado de muestra:

88+88=176
176+671=847
847+748=1595
1595+5951=7546
7546+6457=14003
14003+30041=44044

Ideas Para responder:

Este problema necesita atención, DO compilador pow (10,2) = 99,9999. Directa fundido se perderán los datos correctos.

Código AC

#include <stdio.h>
#include <math.h>
#include <string.h>

int change(int x)
{
	char a[20];
	memset(a,0,sizeof(a));
	sprintf(a,"%d",x);
	int y=0;
	for(int i=0;i<strlen(a);i++)
	{

		y=y+(a[i]-'0')*(int)(pow(10,i)+0.001);
	}
	return y;
}

int ishui(int n)
{
	char a[20];
	memset(a,0,sizeof(a));
	sprintf(a,"%d",n);	
	for(int i=0;i<strlen(a)/2;i++)
	{
		if(a[i]!=a[strlen(a)-1-i])
		{
			return 0;
		}
	}
	return 1;
}






int main()
{
	int x;
	while(~scanf("%d",&x))
	{
		if(x==0)
		{
			break;
		}
		
		int y;

		while(1)
		{
			y=change(x);
			printf("%d+%d=%d\n",x,y,x+y);
			if(ishui(x+y))
			{
				break;
			}
			x+=y;
		}

	}
}
Publicado 61 artículos originales · ganado elogios 5 · Vistas 2392

Supongo que te gusta

Origin blog.csdn.net/qq_38344326/article/details/104762601
Recomendado
Clasificación