1 条题解
-
0
[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