B 模拟题

同源

https://ac.nowcoder.com/acm/contest/6871/A

#include<iostream>
#include<string>
using namespace std;
typedef long long ll;
int main() {
    string s;
    ll ans = 0, cnt = 0, res = 0;
    ll sum = 0;
    cin >> s;
    int len = s.length();
    // 主要思想 将字符串用括号来进行分割成一段一段
    for(int i = 0; i < len;) {
        if(s[i] == 'C' || s[i] == 'O' || s[i] == 'H') {
            if(s[i] == 'C') cnt = 13;
            if(s[i] == 'O') cnt = 17;
            if(s[i] == 'H') cnt = 1;
            i++;
            res = 0;
            while(i < len && s[i] >= '0' && s[i] <= '9')
                res = res*10 + s[i++]-'0';
            if(!res) ans += cnt; // 判断字母后面有没有数字
            else ans += cnt*res; // 把目前求出来的数加到ans
        }
        else if(i < len && s[i] == '(') { // 前面的一段结束了,到新一段
            sum += ans; // 将暂存数ans保存到总数sum
            ans = 0; // 清零
            i++;
        }
        else if(i < len && s[i] == ')') { // 表示括号这一段已经结束
            i++;
            res = 0;
            while(i < len && s[i] >= '0' && s[i] <= '9')
                res = res*10 + s[i++]-'0';
            if(!res) sum += ans; // 判断括号后面有没有数字
            else sum += ans*res;// 将暂存数ans保存到总数sum
            ans = 0; // 清零
        }
    }
    sum += ans; // 把最后一段加上, 如果最后是括号加上 0 不影响结果
    cout << sum << endl;
    return 0;
}


全部评论

相关推荐

找工作勤劳小蜜蜂:自我描述部分太差,完全看不出想从事什么行业什么岗位,也看不出想在哪个地区发展,这样 会让HR很犹豫,从而把你简历否决掉。现在企业都很注重员工稳定性和专注性,特别对于热爱本行业的员工。 你实习的工作又太传统的it开发(老旧),这部分公司已经趋于被淘汰,新兴的互联网服务业,比如物流,电商,新传媒,游戏开发和传统的It开发有天然区别。不是说传统It开发不行,而是就业岗位太少,基本趋于饱和,很多老骨头还能坚持,不需要新血液。 工作区域(比如长三角,珠三角,成渝)等也是HR考虑的因素之一,也是要你有个坚定的决心。否则去几天,人跑了,HR会被用人单位骂死。
点赞 评论 收藏
分享
评论
6
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务