特别的数字
【问题描述】
定义一种特别的数字,它的左半部分和它的右半部分完全一样,例如2020,它的左半部分和右半部分都是20,是一个特别的数字。
注意:数字202不是特别的数字,数字2112也不是特别的数字。
现在请你求出区间[1,n]的这n个数中,有多少个特别的数字。
【输入形式】
输入整数n。
【输出形式】
输出一个整数,表示区间[1,n]的这n个数中特别的数字的数量。
【样例输入】
22
【样例输出】
2
【样例说明】
[1,22]这22个数中,只有11和22是特别的数字,因此输出2
【评分标准】
对于20%的数据,保证1<=n<=100
对于40%的数据,保证1<=n<=100000
对于60%的数据,保证1<=n<=1e9
对于100%的数据,保证1<=n<=1e18
解题思路
这里直接输入为字符串,避免枚举不够
直接判断字符串左右两边是否相等
def count_special_numbers(n):
count = 0
for num in range(1, int(n)+1):
num_str = str(num)
length = len(num_str)
if length % 2 == 0 and num_str[:length//2] == num_str[length//2:]:
count += 1
return count
n = input("请输入整数n:")
result = count_special_numbers(n)
print(result)