JSK-16788 密码翻译【密码】

密码翻译
本题是 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

时间: 2024-10-17 13:37:09

JSK-16788 密码翻译【密码】的相关文章

AC日记——密码翻译 openjudge 1.7 09

09:密码翻译 总时间限制:  1000ms 内存限制:  65536kB 描述 在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易的识别.我们给出一种最简的的加密方法,对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A替代,其他非字母字符不变,则可得到一个简单的加密字符串. 输入 输入一行,包含一个字符串,长度小于80个字符. 输出 输出每行字符串的加密字符串. 样例输入 He

网站开发之用户重设密码 找回密码功能的实现原理

网站开发之用户重设密码 找回密码功能的实现原理,这个东西基本在现在每个系统中都带有的功能,但是实现的方式也是挺多的,这个是跟数据库没多大关系的方法嘞. 用户流程: 1.用户忘记密码,来到密码重设界面 2.用户输入Email地址,点击重设密码按钮 3.用户收到一封密码重设邮件,里面有重设密码的链接,此链接有过期时间 4.用户点击链接,来到密码重设页面,输入新密码,完成 这个流程并没有什么创新,很多网站都是用这套流程 后端实现方式: 1.当用户输入Email地址后,验证这个Email,如果存在于数据

MySQL数据库修改密码&忘记密码

方法1:用SETPASSWORD命令 MySQL -uroot mysql> SET PASSWORD FOR'root'@'localhost' = PASSWORD('newpass'); 方法2:用mysqladmin 如果root已经设置过密码,采用如下方法 mysqladmin-u root password "newpass" mysqladmin -u root passwordoldpass "newpass" 方法3:用UPDATE直接编辑u

密码框密码不能绑定问题解决方案

想要扩展该控件时发现PasswordBox是一个密封类,是不可继承的. 故通过附加属性来实现该功能. 声明了两个附加属性 IsPasswordBindingEnabled:用来指示密码是否可用来绑定,当值发生改变时订阅或者取消订阅当Password改变时同步用于绑定的密码附加属性 BindedPassword:用于绑定的密码,与密码同步,当值发生改变是时与Password同步 /// <summary> /// 扩展密码框密码可用于绑定的帮助类 /// </summary> pub

NetScaler对于首次登陆更改密码、密码过期、下次登陆更改密码

对于首次登陆更改密码.密码过期.下次登陆更改密码等问题,需要经过如下配置方可实现: 1.对于在AG上认证的情况,需要在AG的AD配置界面,勾选TLS(默认是PLAINTEXT),并勾选"Allow                         Password Change" 2.并且在WI上同样需要配置允许用户在密码过期时或者随时更改密码. 3.对于在SF上认证的情况,只需要在SF上配置允许用户更改密码即可. 参考KB: http://support.citrix.com/arti

【c语言】将“China”译成密码,密码规律:用原来字母后边第4个字母代替原来的字母。

// 将"China"译成密码,密码规律:用原来字母后边第4个字母代替原来的字母. // 要求:先赋初值,然后分别用putchar和printf输出 #include <stdio.h> int main() { char c1 = 'C'; char c2 = 'h'; char c3 = 'i'; char c4 = 'n'; char c5 = 'a'; c1 = c1 + 4; c2 = c2 + 4; c3 = c3 + 4; c4 = c4 + 4; c5 =

Spring Security PasswordEncoder 密码校验和密码加密

Spring Security PasswordEncoder 密码校验和密码加密流程 PasswordEncoder 使用 首先我们先来看看一个创建密码编码器工厂方法 org/springframework/security/crypto/factory/PasswordEncoderFactories.java public static PasswordEncoder createDelegatingPasswordEncoder() { String encodingId = "bcry

翻译密码

[问题背景] zhx 和他的妹子聊天. [问题描述] 考虑一种简单的加密算法. 假定所有句子都由小写英文字母构成,对于每一个字母,我们将它唯一地映 射到另一个字母.例如考虑映射规则: a->b, b->c, c->d, d->a. 那么单词 bad 就会被映射为 cba.这个映射规则的"逆 映射规则"为: b->a, c->b, d->c, a->d. 对于密文 cba, 我们很容易将它解密为 bad. 当然,这样的映射需要保证每一个字母

密码翻译

题目描述 在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易的识别. 我们给出一种最简的的加密方法,对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A替代,则可得到一个简单的加密字符 串. 输入要求 第一行是字符串的数目n.其余n行每行一个字符串,用gets(s)方式读取这一行字符串.每个字符串长度小于80个字符. 输出要求 输出每行字符串的加密字符串. 假如输入 1 Hello