万圣节有一个Party,XadillaX显然也要去凑热闹了。因为去凑热闹的人数非常庞大,几十W的数量级吧,自然要进场就需要有门票了。很幸运的,XadillaX竟然拿到了一张真·门票!这真·门票的排列规则有些奇怪: 门票号是由0~6组成的六位数(0~6这几个数字可重用) 每一个门票号的每一位不能有三个连续相同的数字(如123335是不行的) 每一个门票号相邻的两位相差必须在四以下(<4)(如016245是不行的) 要求至少有以下三个子函数。主函数读入数据范围,对区间的每个数调三个子函数。 子函数1,参数为n,判断数字n是否有三个连续相同的数字。 子函数2,参数为n,判断数字n相邻的两位差是否在4以下。 子函数3,参数为n,判断数字n是否所有位在0-6之间。
时间: 2024-03-02 08:49:45 浏览: 21
以下是三个子函数的 Python 代码实现:
```python
def has_three_consecutive_digits(n):
s = str(n)
for i in range(len(s)-2):
if s[i] == s[i+1] == s[i+2]:
return True
return False
def has_adjacent_digits_difference_less_than_4(n):
s = str(n)
for i in range(len(s)-1):
if abs(int(s[i]) - int(s[i+1])) >= 4:
return False
return True
def is_all_digits_between_0_and_6(n):
s = str(n)
for d in s:
if int(d) < 0 or int(d) > 6:
return False
return True
```
然后,你可以在主函数中读入数据范围,对区间的每个数字调用以上三个子函数,判断其是否符合门票号的规则,如果符合,则计数器加1。最后,输出计数器的值即可。