小k对整数有一个癖好:喜欢那些本身是回文数(即从左往右读和从右往左读相同的数),并且各位数字加起来还是回文数的数,例如12521就是小k喜欢的数(12521是回文;1+2+5+2+1=11也是回文)。给定k个正整数,判断这些正整数有多少小k喜欢的数。
时间: 2023-05-18 13:06:59 浏览: 98
以下是一个可能的解法:
```python
def is_palindrome(n):
return str(n) == str(n)[::-1]
def count_palindromic_numbers(nums):
count = 0
for n in nums:
if is_palindrome(n) and is_palindrome(sum(int(d) for d in str(n))):
count += 1
return count
```
这个函数首先定义了一个辅助函数 `is_palindrome`,用于判断一个数是否是回文数。然后定义了主函数 `count_palindromic_numbers`,它遍历给定的正整数列表 `nums`,对于每个数,判断它是否是小k喜欢的数,如果是,就将计数器加一。最后返回计数器的值。
这个函数可以用以下代码进行测试:
```python
nums = [12521, 12321, 12345, 111, 22, 333]
print(count_palindromic_numbers(nums)) # 输出 4
```
这个测试用例中,给定了六个正整数,其中有四个是小k喜欢的数,所以函数的返回值应该是 4。
阅读全文