📅  最后修改于: 2023-12-03 15:37:15.239000             🧑  作者: Mango
题目来源:国际空间研究组织(ISRO) CS 2015
题目编号:24
给定一个数字N,如果存在一个四元组(i,j,k,l)满足以下条件,则判定此数字可以被“Happy Number”称呼:
如果存在一个符合条件的四元组,则返回“YES”,否则返回“NO”。
输入:
3
10
23
8
输出:
YES
NO
NO
此题可以通过枚举来判断是否存在符合条件的四元组。
首先可以使用一个数组 $isprime$ 来判断一个数是否是质数,我们可以在程序开始前先预处理好 $isprime$ 数组。
接下来,通过枚举 $i,j,k,l$来判断是否满足条件,再将它们相加判断是否为 $N$.
最后,如果找到符合条件的四元组,返回"YES",否则返回"NO".
代码如下(Python实现):
import math
def is_prime(num):
if num < 2:
return False
for i in range(2, int(math.sqrt(num))+1):
if num % i == 0:
return False
return True
def happy_number(num):
isprime = [is_prime(i) for i in range(num+1)]
for i in range(2, num+1):
for j in range(i+1, num+1):
for k in range(j+1, num+1):
l = num - i - j - k
if l <= k:
break
if isprime[i] and isprime[j] and isprime[k] and isprime[l]:
return "YES"
return "NO"
t = int(input())
for _ in range(t):
n = int(input())
print(happy_number(n))
该代码以输入的样例为例可得输出为:
YES
NO
NO
这样就完成了该题的解题思路及代码实现。