题目描述
mx妹妹要过生日了!作为mx妹妹的好同(peng)学(you),kqp他要送给mx妹妹一样特别的礼物,譬如……项链!
项链由前n种大写字母组成,每种字母都有不同的爱心值。
Mx妹妹已经知道了:
1、组成整个项链的所有字母串;
2、整个项链的爱心值之和m,
3、以及其中的n-1种字母所带有的爱心值a;
她想知道剩下那种字母的爱心值是多少。
输入
第一行只有一个整数n;
第二行一个字母串s表示kqp的项链,长度<=1000;
第2+1~2+n-1行,每行有个大写母c和一个整数a,之前用个空格隔开,表示字母c所带的爱心值为a;
最后一行只有一个整数表示整个项链的爱心值之和m。
输出
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。
实现代码:
#include<bits/stdc++.h>//头文件
using namespace std;
int n,x[30],s;//分别代表字母总数,每个字母的爱心值(数值),计数器
double m;//项链总爱心和
int main()
{
char a[1000],y[300];//分别表示项链信息,每个字母的爱心值(字母)
cin>>n>>a;//输入项链信息
int g=strlen(a);//获得项链长度
for(int i=1;i<n;i++)//循环每个字母
{
cin>>y[i]>>x[i];//输入每个字母的爱心值
for(int j=0;j<g;j++)//循环项链里面的这个字母
{
if(a[j]==y[i])//如果这个字母=输入字母
{
s+=x[i];//将计数器增加输入字母的爱心值
a[j]='0';//将这个字母排除
}
}
}
cin>>m;//输入爱心值之和
m-=s;//减去已知的字母总和
int u=0;//计算未知字母的个数
for(int i=0;i<g;i++)if(a[i]!='0')u++;//计算未知字母的个数
m/=u;//计算每个字母的平均值
printf("%.2lf",m);//输出未知字母的值
return 0;
}
运行结果: