社区讨论

站外题求助

学术版参与者 3已保存回复 5

讨论操作

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

当前回复
5 条
当前快照
1 份
快照标识符
@m1pwu4e7
此快照首次捕获于
2024/10/01 11:59
去年
此快照最后确认于
2025/11/04 18:24
4 个月前
查看原帖
题目描述 小珅最近看到了一个手机尾号估价的直播,人们总会按照内心喜好的对四位的手机尾号附加一些意义和价值,小珅也设置了一个估价规则:
  • 基础价格:所有数字之和。
  • 连号加价:如果有 个数字 相邻(要求 ),那么会在基础价格的基础上增加 。
  • 特殊数字:中国人喜欢 ,和 ,每出现一个 8 或 6,价格都在之前的基础上翻倍一次。 现在输入四个数字字符,为 小珅 的手机尾号,请输出估价。 输入 四个数字字符。 输出 输出估价。 样例输入 复制
INPUT1
8888
OUTPUT1
66048

样例 1 解释

基础价格:8+8+8+8=32,连号加价 32+8^4=4128,特殊数字翻倍 4128* 2* 2* 2* 2=66048
INPUT2
0000
OUTPUT2
0
INPUT3
8848
OUTPUT3
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() {
CPP
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%)

回复

5 条回复,欢迎继续交流。

正在加载回复...