专栏文章

B4128 [信息与未来 2014] 夏令营旗手 题解

B4128题解参与者 5已保存评论 5

文章操作

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

当前评论
5 条
当前快照
1 份
快照标识符
@miq8ffjh
此快照首次捕获于
2025/12/04 00:39
3 个月前
此快照最后确认于
2025/12/04 00:39
3 个月前
查看原文
这道题有多种解法。我给大家讲一下我的做法。

正文

这道题相信很多人看到题就想到打表,不过代码有点长,所以我提供一种代码很短而且好理解的思路。

小实验

这里我们先不说思路,先做一个小实验。这个小实验就是一个字符转化成数字是多少。
CPP
#include<bits/stdc++.h>
using namespace std;
int main(){
    string s="ABC";
    for(int i=0;i<s.size();i++)
        cout<<s[i]-'0'<<" ";//对于每一个字符,通过“-‘0’”转化成数字
    return 0;
}
结果是 17,18,19。
所以我们知道了 AA 转化成数字为 17,后面的字符一次加一。
那么这个跟我们的题目有什么关系吗?有很大的关系!我们其实可以找这个数字和题目中要求的数字的差是多少,然后统计答案的时候加上这个数就行了。不难发现这个数是 48。

思路

思路其实上文已经说了,这里总结一下。就是说对于这个字符串的每一位字符都转化成数字并且加上 48。最后输出答案。
怎么样?很简单吧!如果实在是不懂的话就直接看代码吧。
CPP
#include<bits/stdc++.h>//万能头文件
using namespace std;
string s;//输入数据
long long ans;//最终答案
int main(){//主函数
	cin>>s;//输入字符串
	for(int i=0;i<s.size();i++)//枚举 s 里的每一位字符
		ans+=s[i]-'0'+48;//答案加上这个字符转化成的数字并加上与题目中的差就是这个字符对应的题目中的数字了
	cout<<ans<<endl;//输出答案
	return 0;//结束程序
}

评论

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

正在加载评论...