1 条题解

  • 0
    @ 2026-10-18 21:31:58

    [NOIP 2013 普及组] 计数问题

    知识点

    枚举、数位统计

    解题思路

    枚举1到n,将每个整数转为十进制字符串,统计其中等于数字x对应字符的位置数。

    正确性说明

    1到n每个整数恰访问一次,其中每个十进制数位恰检查一次;每次匹配贡献1,因而没有遗漏或重复。

    易错点

    统计出现次数而非包含x的整数个数;x=0时也应按正常十进制表示统计,不补前导零。

    复杂度

    时间O(n log(n+1)),额外空间O(log(n+1))。

    参考代码(GNU C++17)

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        int n,x;cin>>n>>x;int ans=0;
        for(int i=1;i<=n;++i) for(char c:to_string(i)) if(c==char('0'+x)) ++ans;
        cout<<ans<<'\n';
    }
    
    • 1

    信息

    ID
    60
    时间
    1000ms
    内存
    256MiB
    难度
    进阶
    标签
    递交数
    3
    已通过
    2
    上传者