Red de conocimiento informático - Consumibles informáticos - El mejor algoritmo para el Black Friday (entorno TC)

El mejor algoritmo para el Black Friday (entorno TC)

La pregunta original del examen de programador en la segunda mitad de 2007 es sobre el "Viernes Negro", puede consultarla a continuación.

Se sabe que el 1 de enero de 1900 es un Lunes, el siguiente La función count_5_13(int año) se utiliza para calcular cuántos "Viernes Negros" hay en un año determinado. "Viernes Negro" se refiere a una fecha que es tanto el día 13 como el viernes.

Función count_5_13(int año) Primero, calcula el día de la semana el 13 de enero del año, y luego calcula el día de la semana el día 13 de cada mes, si es viernes, cuenta.

La función isLeapYear(int año) se utiliza en el programa. Su función es determinar si el año dado es bisiesto y el valor de retorno es 1 (o 0), respectivamente, lo que indica que el año es (o no es) un año bisiesto.

[Función del lenguaje C]

int count_5_13 (int año)

{

int fecha es /* 0 para domingo, 1 a 6 para lunes a sábado respectivamente*/

días largos = 0; /* días registra el número de días*/

int m, y, c = 0; /* c se utiliza para representar el número de Black Fridays*/

if (año < 1900) return -1;

/*Calcula el número de días entre el 1 de enero. , 1900 y 13 de enero del año dado*/

días = 12;

for (y = 1900; y < año; y++) {

días += 365;

if (isLeapYear(y)) (1 ) ;

}

fecha = ((días % 7) + 1) % 7 ; /* Calcular el día de la semana el 13 de enero de un año determinado*/

c = ( (2) ) 1 : 0;

for(m = 1; ( 3) ; m++) {

cambiar (m) {

caso 1: caso 3: caso 5: caso 7: caso 8: caso 10: caso 12:

días = 31; descanso;

caso 4: caso 6: caso 9: caso 11:

días = 30; descanso;

caso 2 : días = 28;

if ( (4) ) días = 29;

descanso;

}/* fin del cambio*/

fecha =((días % 7) + (5) ) % 7;

if (fecha == 5) c++;

} /* fin de for*/

return c;

}

Respuesta estándar: (1)día++ (2)fecha==5 (3)m<12 (4)esaño bisiesto( año) (5)fecha