Preguntas reales de concursos de programación a lo largo de los años

Este problema no parece muy simple, por lo que necesitamos diseñar un algoritmo:

Hablemos primero de matemáticas:

Configuración:

an=a ( n-1) *d? (Aquí d=1)

a1=a

an=a n-1

sn =(a 1 an)n/2 =(2a- 1 n)/2

Volvamos a este programa:

Nuestros datos de entrada son en realidad sn, por lo que necesitamos encontrar N secuencias crecientes consecutivas comenzando desde A para que la suma sea sn.

Aquí podemos juzgar por el ciclo. Dados n y sn conocidos, podemos encontrar a; si a es un número entero positivo, podemos encontrar el primer término de la secuencia aritmética; si se da n, d=1, podemos escribir la suma.

El código es el siguiente:

# include ltstdio.h gt

¿No es válido? principal()

{

int? Entrada, I, n, bandera

¿Flotador? a; //El primer elemento de la secuencia aritmética no es necesariamente un número entero.

flag = 0;

Printf("Ingrese el número entero para juzgar:\n");

scanf("d", amp input);

p>

for(n = 2; n lt=entrada; n )

{

a = (2 *entrada n-n * n)/ (2.0 * n); //El primer elemento de la búsqueda

if(int(a)== a amp; ampa gt0)//Si es un número entero, cumple con los requisitos.

{

printf("d=d ", input, int(a)); // La secuencia de salida es un número entero y A es esencialmente un número entero, por lo que el tipo del yeso no afecta los resultados.

for(I = 1; i lt= n-1; i)

printf(" d ", int(a I)); // Otros elementos de la secuencia aritmética También es un número entero. ai es esencialmente un número entero y es el tipo de carga y descarga.

printf(" \ n ");

flag; //flag registra las series que cumplen con los requisitos.

}

}

si(bandera==0)? //La bandera es inicialmente 0. A través del bucle anterior, si existe una existencia satisfactoria, no es 0. Si es 0, significa que no se puede escribir como una secuencia aritmética.

Printf("d "no se puede expresar como la suma de n enteros positivos consecutivos\n ", entrada);

}