明明是1993年3月3日出生的,他出生的年份,月数、日期都有数字3,他认为含有数字3的数都是他的幸运数,甚至凡是3的倍数的数他都非常喜欢,认为都是他的幸运数,现在给出一个正整数N,请你帮明明统计出1至N之间(包括1和N)有几个数字是明明的幸运数。python解决
时间: 2024-10-21 07:06:38 浏览: 28
明明的幸运数字规则是那些由3组成的年份、月份和日期的组合,以及3的倍数。对于给定的正整数N,我们需要计算1到N之间的所有符合条件的数。
我们可以创建一个函数来检查每个数是否符合明明的要求:
1. 年份是3的倍数(因为没有提到具体的位数,我们假设年份只考虑一位数的情况,即1993这种形式),并且月份和日期也是3的倍数。
2. 对于月份和日期,它们可以单独由3组成,也可以是其他数字加上3(例如43、563等)。
以下是Python代码实现这个功能:
```python
def count_lucky_numbers(n):
def is_lucky(num):
year = int(str(num)[0:2])
month_day = int(str(num)[2:])
return num % 3 == 0 or (year % 10 == 3 and month_day % 10 == 3) or \
(month_day // 10 == 3 and month_day % 10 != 3) or \
(month_day % 10 == 3)
lucky_count = sum(1 for i in range(1, n+1) if is_lucky(i))
return lucky_count
# 示例
N = 100
lucky_numbers = count_lucky_numbers(N)
print(f"在1到{N}的范围内,有{lucky_numbers}个明明的幸运数。")
阅读全文