站外题求助
  • 板块学术版
  • 楼主Aaa_yym
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/10/1 11:58
  • 上次更新2024/10/1 15:34:51
查看原帖
站外题求助
1274502
Aaa_yym楼主2024/10/1 11:58

题目描述 小珅最近看到了一个手机尾号估价的直播,人们总会按照内心喜好的对四位的手机尾号附加一些意义和价值,小珅也设置了一个估价规则:

  • 基础价格:所有数字之和。
  • 连号加价:如果有 个数字 相邻(要求 ),那么会在基础价格的基础上增加 。
  • 特殊数字:中国人喜欢 ,和 ,每出现一个 8 或 6,价格都在之前的基础上翻倍一次。 现在输入四个数字字符,为 小珅 的手机尾号,请输出估价。 输入 四个数字字符。 输出 输出估价。 样例输入 复制
8888
66048

样例 1 解释

基础价格:8+8+8+8=32,连号加价 32+8^4=4128,特殊数字翻倍 4128* 2* 2* 2* 2=66048

0000
0
8848
736

样例 3 解释

基础价格:8+8+4+8=28,连号加价 28+8^2=92,特殊数字翻倍 92* 2* 2* 2=736

我的代码

#include<bits/stdc++.h>

using namespace std;

#define int long long

signed main() {

string s;
cin>>s;
int ans0=0;
for(char c:s){
    ans0+=c-'0';
}
int cnt1=1,ss,cnt=1;
for(int i=0;i<s.size()-1;i++){
    if(s[i]==s[i+1]){
        cnt1++;
        ss=s[i]-'0';
    }
}
for(int i=1;i<=cnt1;i++){
	cnt*=ss;
}
int sum=cnt+ans0;
int sa=count(s.begin(),s.end(),'8')+count(s.begin(),s.end(),'6');
for(int i=1;i<=sa;i++){
	sum*=2;
}
cout<<sum<<endl;
return 0;

}

求解答(24%)

2024/10/1 11:58
加载中...