特别的数字

特别的数字

【问题描述】

定义一种特别的数字,它的左半部分和它的右半部分完全一样,例如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)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值