1 条题解

  • 0
    @ 2026-10-18 21:19:15

    [CSP-J 2019] 数字游戏

    知识点

    字符串、计数、遍历

    解题思路

    读入长度为8的字符串,逐个字符检查是否为字符1,遇到一次就将计数器加一。不能把它读成整数后直接数位,否则前导零会丢失且处理规则变得多余。

    正确性说明

    在检查前i个字符后,计数器恰好等于这i个字符中1的个数。初始i=0时成立;每一步根据当前字符是否为1正确增加计数。遍历结束时i=8,因此计数器就是要求的答案。

    易错点

    比较的是字符'1';输入允许以0开头;全零的答案为0,全一的答案为8。

    复杂度

    时间O(|s|),本题|s|=8;额外空间O(1),输入字符串占O(|s|)。

    参考代码(GNU C++17)

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        ios::sync_with_stdio(false); cin.tie(nullptr);
        string s; cin>>s;
        int ans=0;
        for(char c:s) if(c=='1') ++ans;
        cout<<ans<<'\n';
        return 0;
    }
    
    • 1

    信息

    ID
    825
    时间
    1000ms
    内存
    250MiB
    难度
    进阶
    标签
    递交数
    0
    已通过
    0
    上传者