PAT (Advanced Level) Practice 1035 Password (20 分) 凌宸1642
PAT (Advanced Level) Practice 1035 Password (20 分) 凌宸1642
题目描述:
To prepare for PAT, the judge sometimes has to generate random passwords for the users. The problem is that there are always some confusing passwords since it is hard to distinguish 1 (one) from l (L in lowercase), or 0 (zero) from O (o in uppercase). One solution is to replace 1 (one) by @, 0 (zero) by %, l by L, and O by o. Now it is your job to write a program to check the accounts generated by the judge, and to help the judge modify the confusing passwords.
译:为了准备 PAT , 裁判们有时候不得不为用户生成随机的密码。这样的问题就是经常会出现许多混乱的密码,因为很难区分 1(1) 和 l (L 的小写) , 0 (0) 和O (o 的大写)。一种解决办法就是用 @ 代替 1 , % 代替 0 , L 代替 l , O代替 o。现在你的任务就是写一个程序检查裁判生成的账号,并帮助裁判修改这混乱的密码。
Input Specification (输入说明):
Each input file contains one test case. Each case contains a positive integer N (≤1000), followed by N lines of accounts. Each account consists of a user name and a password, both are strings of no more than 10 characters with no space.
译:每个输入文件包含一个测试用例,每个用例包含一个正整数 N (≤1000), 紧跟着 N 行账号。每个账号包含一个 用户名 和一个密码,并且都是不超过十个字符并且不含空白符的字符串
Output Specification (输出说明):
For each test case, first print the number M of accounts that have been modified, then print in the following M lines the modified accounts info, that is, the user names and the corresponding modified passwords. The accounts must be printed in the same order as they are read in. If no account is modified, print in one line There are N accounts and no account is modified where N is the total number of accounts. However, if N is one, you must print There is 1 account and no account is modified instead.
译:对于每个测试用例,第一行输出被修改过的账号的数量 M,然后接下来 M 行打印修改过的账号信息,也就是说,用户名对应的修改过的密码。账号的输出顺序必须和输入顺序一致。如果没有账号被修改,在一行中打印 There are N accounts and no account is modified 其中 N 表示 账号的总数。但是,如果 N 等于 1的话,你必须输出 There is 1 account and no account is modified 。
Sample Input 1 (样例输入1):
3
Team000002 Rlsp0dfa
Team000003 perfectpwd
Team000001 R1spOdfa
Sample Output 1 (样例输出1):
2
Team000002 RLsp%dfa
Team000001 R@spodfa
Sample Input 2 (样例输入2):
1
team110 abcdefg332
Sample Output 2 (样例输出2):
There is 1 account and no account is modified
Sample Input 3 (样例输入3):
2
team110 abcdefg222
team220 abcdefg333
Sample Output 3 (样例输出3):
There are 2 accounts and no account is modified
The Idea:
设计到字符串,由于需要存储一个 name - passwd 的键值对, 本来首选是使用 map 来进行键值对的处理,但是map会自动排序,与要求输出顺序需要喝输入顺序不同相矛盾,故采取了用 vector来存储 pair 类型数据。值得注意的是,题目中明确说明了 n = 1 和 n != 1的时候的情况输出是不同的,特别注意 are 和 is 还有 account 和 accounts 这里有坑(测试点2) .
The Codes:
#include<bits/stdc++.h>
using namespace std ;
string name , passwd1 , passwd2 ;
int n ;
vector<pair<string , string> > ans ; // 利用 pair 捆绑 name 和 passwd
string modify(string s){
string str = "" ;
for(int i = 0 ; i < s.size() ; i ++){
if(s[i] == '1') str += '@' ; // 如果是 1 替换成 @
else if(s[i] == '0') str += '%' ; // 如果是 0 替换成 %
else if(s[i] == 'l') str += 'L' ; // 如果是 l 替换成 L
else if(s[i] == 'O') str += 'o' ; // 如果是 O 替换成 o
else str += s[i] ; // 其他的直接连接
}
return str ;
}
int main(){
scanf("%d" , &n) ;
for(int i = 0 ; i < n ; i ++){
cin >> name >> passwd1 ;
passwd2 = modify(passwd1) ;
if(passwd1 != passwd2) ans.push_back(make_pair(name , passwd2)) ;// 修改的加入向量
}
if(ans.size() == 0){
if( n == 1) printf("There is 1 account and no account is modified\n") ;
else printf("There are %d accounts and no account is modified\n" , n) ;
}else{
printf("%d\n" , ans.size()) ;
for(int i = 0 ; i < ans.size() ; i ++)
printf("%s %s\n" , (ans[i].first).c_str() , (ans[i].second).c_str()) ;
}
return 0;
}
PAT (Advanced Level) Practice 1035 Password (20 分) 凌宸1642的更多相关文章
- PAT (Advanced Level) Practice 1008 Elevator (20 分) 凌宸1642
PAT (Advanced Level) Practice 1008 Elevator (20 分) 凌宸1642 题目描述: The highest building in our city has ...
- PAT (Advanced Level) Practice 1035 Password (20 分)
To prepare for PAT, the judge sometimes has to generate random passwords for the users. The problem ...
- PAT (Advanced Level) Practice 1008 Elevator (20 分) (模拟)
The highest building in our city has only one elevator. A request list is made up with N positive nu ...
- PAT (Advanced Level) Practice 1046 Shortest Distance (20 分) 凌宸1642
PAT (Advanced Level) Practice 1046 Shortest Distance (20 分) 凌宸1642 题目描述: The task is really simple: ...
- PAT (Advanced Level) Practice 1042 Shuffling Machine (20 分) 凌宸1642
PAT (Advanced Level) Practice 1042 Shuffling Machine (20 分) 凌宸1642 题目描述: Shuffling is a procedure us ...
- PAT (Advanced Level) Practice 1041 Be Unique (20 分) 凌宸1642
PAT (Advanced Level) Practice 1041 Be Unique (20 分) 凌宸1642 题目描述: Being unique is so important to peo ...
- PAT (Advanced Level) Practice 1031 Hello World for U (20 分) 凌宸1642
PAT (Advanced Level) Practice 1031 Hello World for U (20 分) 凌宸1642 题目描述: Given any string of N (≥5) ...
- PAT (Advanced Level) Practice 1027 Colors in Mars (20 分) 凌宸1642
PAT (Advanced Level) Practice 1027 Colors in Mars (20 分) 凌宸1642 题目描述: People in Mars represent the c ...
- PAT (Advanced Level) Practice 1023 Have Fun with Numbers (20 分) 凌宸1642
PAT (Advanced Level) Practice 1023 Have Fun with Numbers (20 分) 凌宸1642 题目描述: Notice that the number ...
随机推荐
- React LifeCycle Methods & re-learning 2019
React LifeCycle Methods & re-learning 2019 v16.9.0 https://reactjs.org/docs/react-component.html ...
- asm movbe 指令
movbe MOVBE 目标操作数,源操作数 复制源操作数的数据,交换字节后,移动数据 假如: movbe eax,(float)1000.0 eax == 0x00007A44 movbe eax, ...
- NGK公链有发展前景吗?
最近网络中经常能看到一个新公链项目NGK的消息,很多朋友也都私下表示过,非常看好今年的NGK.对此,小编对NGK做了一些功课,发觉到NGK未来在商业Dapp应用的发展前景,下面就给大家分享一下我的理解 ...
- 在 2021 年你需要掌握的 7 种关于 JavaScript 的数组方法
在新的一年我们学习这些有用的方法 JavaScript 为我们提供了许多处理数组的不同方法.我们将在几分钟内为您介绍 7 个基本且常用的数据方法,以提高您的 JS 开发技能. 1. Array.map ...
- canal数据同步的环境配置
canal数据同步的环境配置:(适用于mysql) 前提:在linux和windows系统的mysql数据库中创建相同结构的数据库和表,我的linux中mysql是用docker实现的(5.7版本), ...
- Java基本概念:封装
一.简介 描述: 生活中,我们要看电视,只需要按一下开关和换台就可以了.我们没有有必要了解电视机内部的结构. 制造厂家为了方便我们使用电视,把复杂的内部细节全部封装起来,只给我们暴露简单的接口,比如电 ...
- Java基础语法:标识符
Java所有的组成部分都需要名字. 类名.变量名 以及方法名 都被称为标识符. 一.规则 Ⅰ.首字符 规则:所有的标识符都应该以字母(A-Z 或者 a-z).美元符($).下划线(_)开始. 示例:t ...
- 多Excel文件内容查询工具。
多Excel文件内容查询工具. 告别繁琐重复的体力劳动,一分钟干完一天的活. 码云 github 下载 当需要在多个Excel表格中查询需要的信息是,一个文件一个文件的去查询非常麻烦. 虽然有其他方法 ...
- Python3+pygame实现的俄罗斯方块 代码完整 有演示效果
一.简单说明 80.90后的小伙伴都玩过"俄罗斯方块",那种"叱咤风云"场景 偶尔闪现在脑海 真的是太爽了:如果没有来得及玩过的同学,这次可以真正的自己做一个了 ...
- secure 审计暴力登陆
文件路径 cd /var/log -rw------- 1 root root 1200063 Aug 10 20:04 secure 做应急响应,或者做脚本监控的时候,都可以参考如下特征 ... A ...