PTA-L1-006 Factor continuo (20 puntos)

PTA-L1-006 Factor continuo (20 puntos)

Puede haber varios números consecutivos en el factor de un entero positivo N. Por ejemplo, 630 se puede descomponer en 3 × 5 × 6 × 7, donde 5, 6 y 7 son 3 números consecutivos. Dado cualquier entero positivo N, se requiere escribir un programa para encontrar el número del factor continuo más largo y generar la secuencia de factor continuo más pequeño.

Formato de entrada:

Ingrese un entero positivo N en una línea (1 <N <2 31).

Formato de salida:

Primero genere el número del factor continuo más largo en la primera fila; luego, en la segunda fila, genere la secuencia de factor continuo más pequeño en el formato del factor 1 factor 2 ... * factor k, donde los factores se emiten en orden creciente, y 1 no se cuenta en Inside.

Muestra de entrada:

630

Salida de muestra:

3
5 6 7

Ideas de resolución de problemas:

El tamaño de N solo puede ser hasta el factorial de 12, enumerando desde 12 hasta la longitud de 1, y cada longitud comienza desde el punto de partida, y cada vez que la multiplicación de inicio a inicio + len-1 se registra con ans. Si n mod ans es 0, salida. Si no es así, salida 1, n.

Código:

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
const int N = 1010;

int main()
{
    
    
    int n;
    cin>>n;
    int max=sqrt(n);

    for(int len=12; len>=1; len--) //枚举每段长度
    {
    
    
        for(int start=2; start<=max; start++) //枚举起点
        {
    
    
            long long int ans=1;
            for(int i=start; i <= start+len-1; i++)
                ans*=i;
            if(n%ans==0) //判断并输出
            {
    
    
                cout<<len<<endl<<start;
                for(int i=start+1; i <= start + len-1; i++)
                    cout<<"*"<<i;
                return 0;
            }
        }
    }
    printf("1\n%d", n);
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/qq_47783181/article/details/109863649
Recomendado
Clasificación