Title

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(); 
}
posted @ 2023-11-05 14:48  UncleSam_Died  阅读(11)  评论(0)    收藏  举报  来源