Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

题目描述

image-20250327130846869

思路

写2个函数,第一个判断一个数是否是(严格的)lucky number,第二个函数遍历所有的lucky number判断是否是当前n的因数。

代码

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <string>
using namespace std;

// 判断一个数字是否是 lucky number(只含有 4 或 7)
bool is_lucky(int num) {
string s = to_string(num); // 比如说会把47转成"47"
for (char c : s) { // 会遍历string中的每个字母
if (c != '4' && c != '7') {
return false;
}
}
return true;
}

// 判断是否是 almost lucky number
string is_almost_lucky(int n) {
for (int i = 1; i <= n; ++i) {
if (is_lucky(i) && n % i == 0) {
return "YES";
}
}
return "NO";
}

int main() {
int n;
cin >> n;
cout << is_almost_lucky(n) << endl;
return 0;
}

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
def is_lucky(num):
# 判断一个数字是不是 lucky number(只含 4 或 7)
return all(c in '47' for c in str(num))

def is_almost_lucky(n):
# 枚举 1 到 n 的所有 lucky number
for i in range(1, n + 1):
if is_lucky(i) and n % i == 0:
return "YES"
return "NO"

n = int(input())
print(is_almost_lucky(n))