题目:Kqp的礼物
题目描述
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
Cake 1#
#include<cstdio>
#include<cstring>
using namespace std;
double x,p;
int n,l,k,a[30],t;
char c,s[1010];
int main()
{
scanf("%d\n",&n);
scanf("%s",s);l=strlen(s)-1;
for(int i=1;i<n;i++)
{
scanf("\n%c %d",&c,&k);
a[c-'A']=k;
}
scanf("%lf",&x);
for(int i=0;i<=l;i++)
{
if(a[s[i]-'A']>0) x-=a[s[i]-'A'];
else t++;
}
p=t;
printf("%.2lf",x/p);
}
Cake 2#
#include<bits/stdc++.h>
using namespace std;
int n,a[200],g,t,b,l;
char c;
string s;
int main(){
cin>>n>>s;
for(int i=0;i<s.size();i++) a[s[i]]++;
for(int i=1;i<n;i++){
cin>>c>>l;
t+=a[c]*l;
g=g+a[c];
}
cin>>b;
printf("%.2lf",(b-t)*1.0/(s.size()-g));
}