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 ...
随机推荐
- Flutter 使用Tabbar不要Title
原文 Demo 1 import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp ext ...
- NGK与AOFEX交易所达成战略合作,BGV即将上线A网!
据NGK官方消息,NGK官方已经与英国伦敦知名交易所AOFEX交易所达成战略合作,将于12月2日全球首发BGV,现已开启充值服务.同时,在12月3日15:00,用户可以参与BGV交易:在12月4日15 ...
- 投资者通过这几种方式可以快速在NGK赚取收益
2020年全球经济危机,各国经济持续低迷,资本市场变得躁动不安.而区块链市场,却异常火爆.各种公链项目相继而起,DeFi.分布式存储一个比一个火爆.NGK公链,无疑成为了这场热潮中有力的推动者之一,一 ...
- 【快速掌握】Redis 的五种数据类型
不同于MySQL的表结构所带来的复杂语句,Redis只需要维护好它的[key-value]结构就可以,因此相比于MySQL,语句非常简单. 今天介绍一下Redis 五种常用的数据类型: 这五种数据类型 ...
- Matplotlib 图表绘制工具学习笔记
import numpy as np import matplotlib.pyplot as plt import pandas as pd arr1 = np.random.rand(10)#一维数 ...
- canal数据同步的环境配置
canal数据同步的环境配置:(适用于mysql) 前提:在linux和windows系统的mysql数据库中创建相同结构的数据库和表,我的linux中mysql是用docker实现的(5.7版本), ...
- 微信小程序:快速生成less文件类嵌套的结构
全部选中标签结构,按住ctrl+shift+p,选中插件Generate CSS tree(提前安装CSS Tree),先删除undefined,将img替换成image,删除标签名view. 完整的 ...
- MySQL like查询使用索引
在使用msyql进行模糊查询的时候,很自然的会用到like语句,通常情况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级,千万级的时候,查询的效率就很容易显现出来.这个时候查询的效率就 ...
- PID算法验证
算法: struct PID { float kp; float kpnfac; float ki; float kinfac; float kd; }; float gCurPPM = 1300; ...
- Python3.x 基础练习题100例(11-20)
练习11: 题目: 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 分析: 兔子的规律为数列1,1,2, ...