Números palíndromos [Copa Puente Azul]

Enlace del título: Palindrome Number [Blue Bridge Cup]
Límite de tiempo: 1 segundo Límite de memoria: 256 MB

Descripción del título:
Números de observación: 12321 y 123321 tienen una característica común, ya sea que se lean de izquierda a derecha o de derecha a izquierda, son iguales.
Tales números se llaman: números palíndromos.
Esta pregunta requiere que encuentre algunos números decimales de 5 o 6 dígitos. Cumplir con los siguientes requisitos:
la suma de los dígitos del número es igual al entero de entrada.

Entrada:
un número entero positivo n (10 <n <100), que representa la suma de dígitos necesarios para cumplir.

Salida:
Varias líneas, cada línea contiene un número entero de 5 o 6 dígitos que cumple con los requisitos. Los números están dispuestos en orden ascendente.
Si no se cumplen las condiciones, salida: -1

Entrada de muestra
45
Salida de muestra
99999

Pregunta: Determine si un número (10000 <= num <= 999999) es un palíndromo y la suma de los dígitos es igual al número ingresado.
Idea: simplemente atraviesa el juicio.

¿Cómo juzgar?
Inserte la descripción de la imagen aquí

En el código:

int palindrome(int x)
{
    
    
    int px=0,xx=x; // px:x倒序的结果 xx:记录x
    int ans=0; //ans:数位和结果
    while(x)
    {
    
    
        px = px*10+x%10;
        ans += x%10;
        x /= 10;
    }
    if(px==xx) // x为回文数
        return ans;  // 返回数位和
    else
        return -1;
}

Use px para almacenar el resultado del orden inverso, y almacene la suma digital y determine si es un palíndromo (use px y xx para comparar), si es para devolver la suma digital directamente, luego compare la suma digital devuelta con el número de entrada, si es igual, entonces Demuestre que cumple con los requisitos y déle salida.

¿Debes entender al inteligente?
Inserte la descripción de la imagen aquí

Código completo:

#include<bits/stdc++.h>
using namespace std;
int palindrome(int x)
{
    
    
    int px=0,xx=x; // px:x倒序的结果 xx:记录x
    int ans=0; //ans:数位和结果
    while(x)
    {
    
    
        px = px*10+x%10;
        ans += x%10;
        x /= 10;
    }
    if(px==xx) // x为回文数
        return ans;  // 返回数位和
    else
        return -1;
}
int main()
{
    
    
    int n;
    while(cin>>n)
    {
    
    
        int flag=0; // 设置一个标记,标记是非有符合条件的回文数
        for(int i=10000; i<=999999; i++)
        {
    
    
            if(palindrome(i)==n)  // i为回文数并且数位和等于输入的n
            {
    
    
                flag=1;
                cout<<i<<endl;
            }
        }
        if(flag==0)
            cout<<-1<<endl;
    }
    return 0;
}

No olvides que te guste después de leer las bellezas, ¡gracias por tu apoyo!
Inserte la descripción de la imagen aquí

¡Venga!

¡Trabajar juntos!

Keafmd

Supongo que te gusta

Origin blog.csdn.net/weixin_43883917/article/details/108736534
Recomendado
Clasificación