1. Descrição do problema:
Para inteiros v e p, defina a sequência de perfuração como:
a [1] = v
a [i] = p% a [i-1]
Por exemplo, quando v = 8, p = 21, a sequência de perfuração correspondente é
a [ 1] = 8
a [2] = 5
a [3] = 1
Após o cálculo, o valor passa a 0, o que não está no escopo de nossa consideração. Portanto, quando v = 8, p = 21, o comprimento da sequência de perfuração é 3. Quando p é constante, o comprimento da sequência de perfuração pode ser diferente para diferentes valores de v. Quando p = 8, se 1 <= v <p, a sequência de perfuração mais longa aparece quando v = 13, é (13, 8, 5, 1) e o comprimento é 4. Quando p = 2021, a sequência Pierce mais longa aparece em v = 1160. Qual é a extensão dessa sequência?
2. Análise de pensamento:
Acho que a descrição deste tópico é muito problemática. Algumas descrições devem ser modificadas para: Quando p = 21, se 1 <= v <p, a sequência Pierce mais longa aparece em v = 13, na verdade, sabe-se que p , Depois de v, a sequência de perfuração correspondente pode ser obtida, de modo que o processo pode ser simulado
3. O código é o seguinte:
if __name__ == '__main__':
v, p = 1160, 2021
seq = [v]
while seq[-1] != 0:
seq.append(p % seq[-1])
# 弹出最后一个为0的元素
seq.pop()
print(len(seq))