Pregunta diaria de Blue Bridge Cup (3): Semana de fin de siglo (pitón)

Tema:

Una secta afirmó una vez que el 31 de diciembre de 1999 era el fin del mundo. Por supuesto, el rumor es contraproducente.
Algunas personas dicen que 31 de diciembre a finales de siglo un cierto en el futuro, si es lunes, será ...
Curiosamente, 31 de diciembre de cualquier año, al final del siglo no puede ser Lunes !!
Así, "fabricante de rumores "Modificado de nuevo al domingo ...
El 31 de diciembre de 1999 es viernes. ¿Puedo preguntar: cuál de los siglos más cercanos en el futuro (es decir, xx99) será el domingo (es decir, domingo) el 31 de diciembre?
Conteste el año (solo escriba este número entero de 4 dígitos, no escriba información redundante como el 31 de diciembre)

Solución_1:

La idea principal es calcular la diferencia horaria.
Sabiendo que el 31 de diciembre de 1999 es viernes
, la diferencia horaria se puede usar para calcular la semana del 31 de diciembre al final de cada siglo
sumando 5 a la diferencia horaria y dividiéndola por siete. .
Si el resto es 0, significa que este día es el domingo
hasta el juicio. Salida después del domingo al final del siglo

Código_1:

import datetime

i = 20
first_day = datetime.datetime.strptime('1999-12-31', '%Y-%m-%d')

while True:
    day = datetime.datetime.strptime('{}99-12-31'.format(i), "%Y-%m-%d")
    delta = day - first_day

    if (delta.days + 5) % 7 == 0:
        print('{}99'.format(i))
        break
    else:
        i += 1

Solución_2:
juzgue directamente el 31 de diciembre del final de cada siglo.
Utilice la función isoweekday en el módulo datetime.
Si el día es domingo (el valor de la función vuelve a 7),
muestre el año

Código_2:

import datetime

i = 19

while True:
    day = datetime.datetime.strptime('{}99-12-31'.format(i), "%Y-%m-%d").isoweekday()

    if day == 7:
        print('{}99'.format(i))
        break
    else:
        i += 1

Supongo que te gusta

Origin blog.csdn.net/weixin_50791900/article/details/112382102
Recomendado
Clasificación