UVA11340 Newspaper 题解
题目大意
本题共有 $N$ 组测试数据。对于每组测试数据,首先一行读入一个整数 $K$,表示付费字符的数量,接下来 $K$ 行每行一个字符和一个整数,表示该字符的价格,单位为美分,一美元为一百美分。接下来一个整数 $M$,表示文章的行数,接下来有 $M$ 行字符串,构成一篇文章,请你算出整篇文章的价格,其价格为所有字符的价格之和,没有标明价格的字符均为 $0$ 美分。
解题思路
一道简单的模拟题,直接根据题意模拟即可。
我们开一个大小为 $256$ 的浮点类型的数组,用来存储每种字符的价格,每组数据时都要清空为 $0$,然后读入 $M$ 行,直接依次计算价格并相加即可。
AC 代码
#include<math.h>
#include<stdio.h>
#include<iostream>
double cost[256];
inline void work(){
for(register int i=0;i<128;++i)
cost[i]=0.0;
int k;scanf("%d",&k);
char c;double val;
for(register int i=1;i<=k;++i){
std::cin>>c;
scanf("%lf",&val);
cost[c]=val/100.0;
}int m;scanf("%d",&m);int cnt=0;
c=getchar();double ans=0.0;
while(c=='\n') c=getchar();
while(cnt<m){
ans+=cost[c];
c=getchar();
while(c=='\n'){
cnt++;
if(cnt==m) break;
c=getchar();
}
}printf("%.2lf$\n",ans);
}
signed main(){
int T;scanf("%d",&T);
while(T--) work();
}

浙公网安备 33010602011771号