数字统计

GitHub跳转原题关系图返回列表

枚举闭区间 [L,R],用字符串 count 累加数字 2 的出现次数。

OJ: noi_openjudge

题目 ID: ch0105-41

难度:入门

标签:枚举字符串数位python

日期: 2026-07-30 23:01

题意

统计闭区间 [L,R][L,R] 中的所有整数里,数字 2 出现的总次数。

思路

遍历 range(left, right + 1),端点 right + 1 保证右端点被包含。每个数转为字符串后,count("2") 统计本数贡献,最后累加。

代码

Python代码

python
left, right = map(int, input().split())
answer = sum(str(number).count("2") for number in range(left, right + 1))
print(answer)

C++代码

cpp
#include <cstdio>


int main(){
    int i,l,r;
    int cnt=0;
    scanf("%d%d",&l,&r);
    for (i=l;i<=r;i++){
        int t= i;
        while( t != 0){
            int a = t % 10;
            if( a == 2){
                cnt++;
            }
            t /= 10;
        }
    }
    printf("%d\n",cnt);
    return 0;
}

复杂度

设区间长度为 ss、其中数的位数最多为 dd,时间复杂度为 O(sd)O(sd),额外空间复杂度为 O(d)O(d)

总结

计数区间题先确认是闭区间,再把右端点加一传给 Python 的 range