retraso Palindrome PAT B1079 (20 minutos)

enlaces a los temas :

Título Descripción
Dado un k + 1 bit positivo número entero N, escrita como k ⋯ a 1 a 0 de que 0≤a i <10 y una para todo i k> 0. N se llama un palíndromo, si y sólo si existe una i para todos I
= A K-I. Zero también se define como un palíndromo.

El número de serie no palindrómicas de operaciones también puede cambiar el palíndromo. La primera digitales invierte, y después se añade al número de serie de reversión, y si no es un palíndromo Repetir esta operación inversa a la vez añadió hasta que aparezca un palíndromo. Si un número no palindrómica puede cambiar un palíndromo, y llamó la demora número palíndromo. (Traducción de la definición https://en.wikipedia.org/wiki/Palindromic_number)

Dado cualquier número entero positivo, esta pregunta le pide que averiguar el número de variantes del palíndromo.

De entrada
de entrada da un número entero positivo de no más de 1,000 en una fila.

De salida
para un número entero dado, línea por línea y salidas el número de variantes de un palíndromo proceso. Cada línea tiene la forma

A + B = C

En donde A es el número original, B es el número de reversión A, C y lo son. Una entrada de número entero de partida. Repetir hasta palíndromo C se convierte en menos de 10 pasos, entonces la salida del C es un número palindrómico en una fila o si;. 10 fracasado para obtener un paso palíndromo, los productos finales en una fila no se encuentran en 10 iteraciones ..

entrada de la muestra
97152

Salida de muestra
97152 122 331 + 25 179 =
122 331 = 255 552 + 133 221
255 552 Número es un palindrómica.

código

#include <iostream>
#include <string>
using namespace std;
string str;
int len;

bool fun() {
	len = str.size();
	for(int i = 0; i < len / 2; i++) 
		if(str[i] != str[len - 1 - i])
			return false;
	return true;
}

void add() {
	len = str.size();
	string temp, sum;
	cout << str << " + ";
	for(int i = 0; i < len; i++)
		temp += str[len - i - 1];		
	cout << temp << " = ";
	int r = 0;
	for(int i = len - 1; i >= 0; i--) {
		 int a = r + str[i] - '0' + temp[i] - '0';
		 sum += (a % 10 + '0');
		 r = a / 10;
	}
	if(r) {
		sum += (r + '0');
		len ++;
	}
	str.clear();
	for(int i = len - 1; i >= 0; i--)
		str += sum[i];		
	cout << str << endl;
}

int main() {
	int k = 10;
	getline(cin, str);
	if(fun())
		cout << str << " is a palindromic number." << endl;
	else {
		while(k--) {
			add();
			if(fun()) {
				cout << str << " is a palindromic number." << endl;
				return 0;
			}
		}
		cout<< "Not found in 10 iterations." << endl;
	}
	return 0;
}
Publicados 327 artículos originales · ganado elogios 12 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/Rhao999/article/details/105203625
Recomendado
Clasificación