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.
[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*/ p>
c = ( (2) ) 1 : 0;
for(m = 1; ( 3) ; m++) {
cambiar (m) { p>
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;
} p>
Respuesta estándar: (1)día++ (2)fecha==5 (3)m<12 (4)esaño bisiesto( año) (5)fecha