El tercer domingo del Día Nacional de la Final de la Copa Blue Bridge (Calcule el resto con un ciclo de 7)

1. Descripción del problema:

El Día Nacional (1 de octubre) en 1949 es el sábado. Este año (2012) el Día Nacional es el lunes. Entonces, desde la fundación de la República Popular China, ¿cuántas veces el Día Nacional ha sido domingo? ¡Siempre que la respuesta no se limite a los medios! Puede utilizar el calendario de Windows, la calculadora de Windows y las fórmulas de Excel. . . . . ¡Por supuesto, también puedes programar! No es necesario escribir los años específicos, ¡solo un número! ¡Nunca envíe código fuente! No escriba la respuesta aquí, escríbala en "Answer.txt"

2. Análisis de pensamiento:

En realidad, hay dos enfoques para este tema. El primer enfoque es utilizar el método "calendario" para acumular el número de días para actualizar la fecha actual, para determinar si el número actual de días es un feriado nacional y es un domingo para contar las fechas que cumplen con las condiciones. (Habrá más detalles involucrados y puede haber errores). El segundo método es usar un bucle para calcular la distancia entre los Días Nacionales de los dos años consecutivos. En este momento, es Es necesario calcular si el año actual es un año normal o un año bisiesto. Si es en un año normal, el Día Nacional tiene una diferencia de 365 días. Si es un año bisiesto, hay una diferencia de 366 días. Y Un punto muy importante es que si las dos fechas difieren en 7 días, las semanas de las dos fechas son las mismas. Por ejemplo, el 20 y el 27 siguientes Hay una diferencia de 7 días, por lo que las semanas de los dos días son las mismas. , porque 7 días es un ciclo:

Así que solo necesitamos calcular el número de días entre el año anterior y el año actual, y luego tomar el resto de 7. El resto es el día de la semana en el Día Nacional del año anterior, y puede ser retrasado unos días sobre la base del día de la semana en el Día Nacional del año anterior. Por ejemplo, el Día Nacional del año anterior fue un sábado, y la diferencia entre el Día Nacional del año anterior y el El Día Nacional del año en curso fue 365 días, y 365% 7 = 1. Entonces la semana del Día Nacional de este año es el sábado del año anterior. El Día Nacional del año es el domingo. En resumen, solo tenemos que recorrer los años y calcular el número de días entre el año anterior y el año actual. Si es un año normal, la semana del Día Nacional del año anterior se desplazará hasta la siguiente. día, si es un año bisiesto, entonces será la semana del Día Nacional del año anterior. Dos días después, (en realidad, la semana de las dos fechas en el ciclo de 7 no cambia. Si se conoce la semana actual, luego calcule cuántos días son la diferencia entre las dos fechas para saber la semana de la próxima fecha): 365% 7 = 1366% 7 = 2. El segundo método es más recomendable porque tiene menos detalles y es más fácil de manejar

3. El código es el siguiente:

# 判断是否是闰年
def isLeap(year: int):
    return (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)


if __name__ == '__main__':
    count = 0
    week = 6
    for i in range(1950, 2013):
        if isLeap(i):
            # 与366 % 7 = 2是一样的
            week += 2
        else:
            # 与365 % 7 = 1是一样的
            week += 1
        # 余数为0那么就为周日
        if week % 7 == 0:
            # print(i)
            count += 1
    print(count)

 

Supongo que te gusta

Origin blog.csdn.net/qq_39445165/article/details/115023035
Recomendado
Clasificación