Kap的礼物

【题目背景】
mx妹妹要过生日了!作为mx妹妹的好同(peng)学(you),kqp他要送给mx妹妹一样特别的礼物,譬如……项链!
【问题描述】
项链由前n种大写字母组成,每种字母都有不同的爱心值。
Mx妹妹已经知道了:
   1、组成整个项链的所有字母串;
2、整个项链的爱心值之和m,
3、以及其中的n-1种字母所带有的爱心值a;
  她想知道剩下那种字母的爱心值是多少。

【输入格式】
  输入文件名为string.in,
第一行只有一个整数n;
第二行一个字母串s表示kqp的项链,长度<=1000;
第2+1~2+n-1行,每行有个大写母c和一个整数a,之前用个空格隔开,表示字母c所带的爱心值为a;
最后一行只有一个整数表示整个项链的爱心值之和m。

【输出格式】
  输出文件名为string.out,
Mx妹妹想了解剩下那个字母c带有的爱心值中多少(保留2位小数)。

【输入样例】
8
CEAAGCGDHFB
A 5
C 35
D 18
E 42
F 15
G 17
H 21
661
【输出样例】
451.00
【数据范围】
40%的数据,项链长度<=10,并且没有重复字母;
80%的数据,项链长度<=255,有重复字母;
100%的数据,st长度<=1000,有重复字母,n<=26。
【样例说明】
项链的字母串为CEAAGCGDHFB
A=5
C=35
D=18
E=42
F=15
G=17
H=21
则原来的字母串为C(35)E(42)A(5)A(5)G(17)C(35)G(17)D(18)H(21)F(15)B(?)
项链总共爱心值=661  661-35-42-5-5-17-35-17-18-21-15=451
未知的B个数为一个,则B=451/1=451.00

解题思路:这是一道简单的题目,我们只需要把给出的字母以及他所在的价值和相同的字母替换,然后再用总共的值减去除未知数外的其他数的值,最后除以未知数的个数就可以了。

注意点:读入字符串和后面的字母和数时,需要前后一致,不然运行会出错。

 废话不多说,上代码。

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s;int n,k=0,m=0,d=0;//d表示探测的数是否是未知数,1就是不是,0就是是。
    double t=0;
    char a[1001];int b[1001],c[1001]={0};
    cin>>n;
    cin>>s;
    for(int i=1;i<=n-1;i++){
    scanf("%s%d",&a[i],&b[i]);
    }
    scanf("%d",&m);
    for(int i=0;i<=s.length();i++){//遍历每个字母
        d=0;
        for(int j=1;j<=n;j++){
            if(s[i]==a[j]){//如果有字母相同
                m=m-b[j];//减去该字母的值
                d=1;break;
            }
        }
        if(d==0)k++;
    }
    t=m/k;
    cout<<fixed<<setprecision(2)<<t;//题目说t需要两位小数。

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值