专栏文章

P5660 [CSP-J2019] 数字游戏 题解

P5660题解参与者 2已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@miqo2lhn
此快照首次捕获于
2025/12/04 07:57
3 个月前
此快照最后确认于
2025/12/04 07:57
3 个月前
查看原文
本题比较简单,使用 char 数组或使用 string 都可,这里使用 string 并讲解几个新手易错点。
  • 下标从 00 开始。
  • 注意 s.size() 函数是 unsigned 类型,不能直接参与 int 类型的运算,因此要采用 for(int i=0;i<s.size();i++) 来遍历字符串。
  • 判断时将 '1' 写成 1 导致错误。
注意到本题保证输入的字符串长度一定为 88,且字符串中只包含字符 00 和字符 11,不难发现后者是不必要的。对于前者,由于字符串长度固定,如果你不想使用 s.size() 函数,请务必注意循环条件中的上界,应写为 i7i \le 7i<8i<8
注意以上几点,因为字符串最大长度只有 88,因此我们开一个 cntcnt 变量用于记录字符串中 11 的个数,遍历整个字符串,当遇到字符 11 时给 cntcnt11,最后输出 cntcnt 即可。
CPP
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
int main(){
	string s;
	cin>>s;
	int cnt=0;
	for(int i=0;i<s.size();i++){
		if(s[i]=='1')cnt++;
	}
	cout<<cnt;
	return 0;
} 

评论

1 条评论,欢迎与作者交流。

正在加载评论...