Red de conocimiento informático - Conocimientos de programación - Secuencia incremental programada

Secuencia incremental programada

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 en realidad son sn, por lo que necesitamos encontrar N secuencias crecientes consecutivas comenzando desde A, de modo que la suma es 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)

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 &&a>0)//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 se ve obligado a convertir. El tipo no afecta los resultados.

for(I = 1;i<= n-1;i++)

printf("+%d ",int(a+I)); //Igual diferencia El otro Los elementos de la secuencia también son números enteros. a+i es esencialmente un número entero y es el tipo de carga y descarga.

printf(" \ n ");

flag++; //bandera registra la serie que cumple 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);

}