PAT Niveau B 1094 Recrutement de Google (20 points) Python

En juillet 2004, Google a érigé un énorme panneau d'affichage (photo ci-dessous) sur la route 101 de la Silicon Valley pour le recrutement. Le contenu est super simple, c'est une URL se terminant par .com, et l'URL précédente est un nombre premier à 10 chiffres, qui est le premier nombre continu à 10 chiffres dans la constante naturelle e. Ceux qui peuvent trouver ce nombre premier peuvent entrer dans la prochaine étape du processus de recrutement en visitant ce site Web de Google.

Recrutement Google

La constante naturelle e est un nombre transcendantal bien connu. Les premiers chiffres sont écrits comme ceci: e = 2,718281828459045235360287471352662497757247093699959574966967627724076630354759457138217852516642 7427466391 932003059921 La réponse est en gras.

Cette question vous oblige à programmer pour résoudre un problème plus général: à partir de tout nombre donné de longueur L, trouvez le nombre premier constitué du premier nombre continu à K chiffres.

Format d'entrée:

Entrez 2 entiers positifs dans la première ligne, qui sont L (un entier positif ne dépassant pas 1000, qui est la longueur du nombre) et K (un entier positif inférieur à 10). La ligne suivante donne un entier positif N de longueur L.

Format de sortie:

Sortez le nombre premier composé des K chiffres consécutifs les plus anciens de N sur une ligne. Si un tel nombre premier n'existe pas, 404 est émis. Notez que les zéros non significatifs dans les nombres d'origine sont également comptés dans le nombre de chiffres. Par exemple, si vous trouvez un nombre premier à 4 chiffres en 200236, 0023 est la solution; mais les 2 premiers ne peuvent pas être générés en tant que 0002, car le zéro non significatif de ce 2 n'existe pas dans le nombre d'origine.

Exemple d'entrée 1:

20 5
23654987725541023819

Exemple de sortie 1:

49877

Exemple d'entrée 2:

10 3
2468024680

Exemple de sortie 2:

404

Idées de résolution de problèmes:

Les deux points principaux de cette question, l'un est de couper la chaîne d'entrée (nombre) en fonction de la longueur requise, c'est plus facile à implémenter avec Python, et vous pouvez utiliser la tranche directement.

L'autre consiste à déterminer si le nombre obtenu par découpage est un nombre premier. Juger les nombres premiers peut être trouvé dans mon autre blog: Juger les nombres premiers (nombres premiers) Python

Code AC:

import math


def isPrime(n):
    if n <= 3:
        return n >= 2
    else:
        if (n + 1) % 6 != 0 and (n - 1) % 6 != 0:
            return False
        for i in range(2, int(math.sqrt(n)) + 1):
            if n % i == 0:
                return False
    return True


s, n = map(int, input().split())  # 获取两个数字:s是题目要求,不做他用,n是切割长度
m = input()  # 输入的字符串(数字) 
if n <= len(m):  # 如果n>m的长度,就没有判断的必要了,可以直接跳过
    for i in range(len(m) - n + 1):  # 然后一个个遍历判断
        if isPrime(int(m[i:i + n])):  # 找到符合要求的字符串以后,输出然后退出程序
            print(m[i:i + n])
            exit(0)
print('404')

Je suppose que tu aimes

Origine blog.csdn.net/weixin_44289959/article/details/111239959
conseillé
Classement