密码翻译
本题是 2013 年海淀区赛原题
话说猴王的徒弟小猴在他的辅导下修炼成仙,然而小猴任在继续努力修炼中,现在的水平已超过猴王(这似乎不符合常理……) 但小猴绝不是白眼狼,不会凭着自己高强的法力与猴王斗争,反而满怀报恩的思想,他一直等待着机会的降临……
终于一天,一位强大的妖魔趁小猴外出的时候,夺走了猴王(一是因为他法力不够,二是因为他已经衰老),将猴王关进了妖洞,小猴回来得知后决定去营救师父。来到师父所在的妖洞外,发现妖洞安装了带有数字密码盘电子门。小猴略显神通,用魔法得知了此门的密码,是一个由字母组成的字符串,可是密码盘上只能输入数字啊,后经小猴再次魔法得知,妖魔有一套转换规则,将这个字符串中的大写字母提取出来,按照密码字典中字母和数字的对照表,将这些大写字母对应密码字典中的数字求和,将求和的结果作为密码。妖魔这套密码转换不算复杂吧?请你编写一个程序帮助小猴将他得到的字母串转换成能够打开妖洞的密码吧!
输入格式
输入第一行只有一个正整数 N,表示密码字符串中可能出现的不同大写字母的个数,其中(1≤N≤26)。
之后的 2N 行:表示密码字典,每两行代表一个大写字母的信息:其中第一行为一个大写字母,第二行为这个大写字母对应的正整数(不大于 1000)。
最后一行:是密码(一个只含有字母的字符串,其长度不超过 30)。
输出格式
输出只含有一个自然数表示开门的密码(小于 30000)。
样例输入
3
A
20
C
10
E
111
abAcEmnCAA
样例输出
181
题目来源
2013 年海淀区中小学生信息学奥林匹克竞赛
提示:
每行的输出数据从第一列输出
问题链接:JSK-16788 密码翻译
问题描述:(略)
问题分析:
????这是一个密码问题,根据题意来解。
程序说明:
????数组dic[]用来存储密码字典,根据输入数据事先设置。然后根据输入的字符串,计算结果。
????判断一个字符是否为大写字母用ctype.h头文件中的函数isupper()实现。
参考链接:(略)
题记:能用库函数则用库函数。
AC的C语言程序如下:
/* JSK-16788 密码翻译 */
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define N 26
#define N2 30
int dic[N];
char s[N2 + 1];
int main(void)
{
int n, a, i;
memset(dic, 0, sizeof(dic));
scanf("%d", &n);
for(i = 1; i <= n; i++) {
scanf("%s", s);
scanf("%d", &a);
dic[s[0] - 'A'] = a;
}
scanf("%s", s);
int sum = 0;
for(i = 0; s[i]; i++)
if(isupper(s[i]))
sum += dic[s[i] - 'A'];
// 输出结果
printf("%d\n", sum);
return 0;
}
原文地址:https://www.cnblogs.com/tigerisland45/p/9743212.html