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 ...
随机推荐
- learning 2018
learning 2018 https://scotch.io/courses https://laod.cn/hosts/ipv6-dns.html xgqfrms 2012-2020 www.cn ...
- Flutter & Scaffold & multiple floatingActionButton
Flutter & Scaffold & multiple floatingActionButton demo import 'package:flutter/material.dar ...
- how to write a node cli tool
how to write a node cli tool https://www.google.com/search?q=how+to+node+cli+tool&oq=how+to+node ...
- 基本ILS面的评估
一.定义与用途 基本ILS面是ICAO DOC8168飞行程序设计规范中提到的一种限制面. 它相当于附件14中代码为3或4的精密进近跑道所规定的障碍物限制面的子集. 包含:进近面(分为两部分).过渡面 ...
- C# 类中操作主窗体控件
主窗体程序: using System; using System.Collections.Generic; using System.ComponentModel; using System.Dat ...
- Android中Context样式分析
目录 1.样式定义以及使用 1.1.默认样式 1.2.样式定义及使用 1.3.当前样式下attr属性的获取 1.4.属性集合的定义与获取 2.Activity中Theme的初始化流程 2.1.系统调用 ...
- MySQL:安装与配置
记录一次 MySQL 在Windows系统的安装配置过程 安装MySQL 0.下载社区版安装包 官网下载地址:https://dev.mysql.com/downloads/installer/ 1. ...
- 大话Spark(7)-源码之Master主备切换
Master作为Spark Standalone模式中的核心,如果Master出现异常,则整个集群的运行情况和资源都无法进行管理,整个集群将处于无法工作的状态. Spark在设计的时候考虑到了这种情况 ...
- 解读KMP算法
前后断断续续搞了5个月,每次都以为自己懂了, 但是要写的时候都不知从何下手,然后又是各种找博客,看帖子,所以这次试着用自己的语言写一个博客. 首先,KMP算法就是从一个模板字符串(S) 中匹配目标字符 ...
- 007-变量的作用域和LED点阵
变量 一.局部变量和全局变量 局部变量:函数内申明的变量,只在函数内有效. 全局变量:函数外部申明的变量.一个源程序文件有一个或者多个函数,全局变量对他们都起作用. 备注:全局变量有副作用,降低了函数 ...