1 条题解

  • 0
    @ 2025-8-24 21:17:19

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Max_robot
    这个家伙很懒,什么也没有留下

    搬运于2025-08-24 21:17:18,当前版本为作者最后更新于2025-02-17 18:44:55,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    这道题有多种解法。我给大家讲一下我的做法。

    正文

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

    小实验

    这里我们先不说思路,先做一个小实验。这个小实验就是一个字符转化成数字是多少。

    #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。最后输出答案。

    怎么样?很简单吧!如果实在是不懂的话就直接看代码吧。

    #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;//结束程序
    }
    
    • 1

    信息

    ID
    9886
    时间
    1000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者