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 juge modify the confusing passwords.

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.

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.

Sample Input 1:

3
Team000003 perfectpwd
Team000001 R1spOdfa

Sample Output 1:

2
Team000002 RLsp%dfa
Team000001 R@spodfa

Sample Input 2:

1
team110 abcdefg332

Sample Output 2:

There is 1 account and no account is modified

Sample Input 3:

2
team110 abcdefg222
team220 abcdefg333

Sample Output 3:

There are 2 accounts and no account is modified

之前的题解定义了结构体,较为复杂:

 #include<cstdio>
 #include<iostream>
 #include<cstring>
 using namespace std;

struct Users{
    char num[20];
    char pass[20];
    bool flag = false;
}user[1005];
int main()

  {
    int N;
    int sum=0;
    scanf("%d",&N);
    int i,j;
    for(i=0;i<N;i++)
    {
        scanf("%s %s",user[i].num,user[i].pass);
        for( j=0;j<strlen(user[i].pass);j++)
        {
            if(user[i].flag!=true)
            {
            if(user[i].pass[j]=='1') {user[i].pass[j]='@';user[i].flag=true;break;}
            if(user[i].pass[j]=='0') {user[i].pass[j]='%';user[i].flag=true;break;}
            if(user[i].pass[j]=='l') {user[i].pass[j]='L';user[i].flag=true;break;}
            if(user[i].pass[j]=='O') {user[i].pass[j]='o';user[i].flag=true;break;}

              }
            if(user[i].flag==true)
            {
                sum++;
                break;
            }

          }
      }

    if(sum)
    {
        printf("%d",sum);
        for(int i=0;i<N;i++)
        {
            if(user[i].flag==true)
            {
            printf("\n");
            printf("%s %s",user[i].num,user[i].pass);
              }

          }
      }
      else
      {
        if(N==1)
        {
            printf("There is 1 account and no account is modified");
          }
          else
          {
            printf("There are %d accounts and no account is modified",N);
          }
      }
   } 

更好的是:

#include <iostream>
#include <vector>
using namespace std;
int main() {
         int n;
         scanf("%d", &n);
         vector<string> v;
         for(int i = 0; i < n; i++) {
                 string name, s;
                 cin >> name >> s;
                 int len = s.length(), flag = 0;
                 for(int j = 0; j < len; j++) {
                         switch(s[j]) {
                                 case '1' : s[j] = '@'; flag = 1; break;
                                 case '0' : s[j] = '%'; flag = 1; break;
                                 case 'l' : s[j] = 'L'; flag = 1; break;
                                 case 'O' : s[j] = 'o'; flag = 1; break;
                         }
                  }
         if(flag) {
                 string temp = name + " " + s;
                 v.push_back(temp);
             }
         }
         int cnt = v.size();
         if(cnt != 0) {
                 printf("%d\n", cnt);
                 for(int i = 0; i < cnt; i++)
                 cout << v[i] << endl;
         }
        else if(n == 1) {
                 printf("There is 1 account and no account is modified");
         }
        else {
                 printf("There are %d accounts and no account is modified", n);
         }
             return 0;
}

使用C++里的vectorstring组合将题目解出,省去了使用结构体的麻烦

PAT甲级——1035 Password (20分)的更多相关文章

  1. PAT 甲级 1035 Password (20 分)(简单题)

    1035 Password (20 分)   To prepare for PAT, the judge sometimes has to generate random passwords for ...

  2. PAT Advanced 1035 Password (20 分)

    To prepare for PAT, the judge sometimes has to generate random passwords for the users. The problem ...

  3. PAT (Advanced Level) Practice 1035 Password (20 分) 凌宸1642

    PAT (Advanced Level) Practice 1035 Password (20 分) 凌宸1642 题目描述: To prepare for PAT, the judge someti ...

  4. PAT 甲级 1035 Password (20 分)

    1035 Password (20 分) To prepare for PAT, the judge sometimes has to generate random passwords for th ...

  5. PAT 甲级 1077 Kuchiguse (20 分)(简单,找最大相同后缀)

    1077 Kuchiguse (20 分)   The Japanese language is notorious for its sentence ending particles. Person ...

  6. PAT 甲级 1061 Dating (20 分)(位置也要相同,题目看不懂)

    1061 Dating (20 分)   Sherlock Holmes received a note with some strange strings: Let's date! 3485djDk ...

  7. 【PAT甲级】1035 Password (20 分)

    题意: 输入一个正整数N(<=1000),接着输入N行数据,每行包括一个ID和一个密码,长度不超过10的字符串,如果有歧义字符就将其修改.输出修改过多少组密码并按输入顺序输出ID和修改后的密码, ...

  8. PAT (Advanced Level) Practice 1035 Password (20 分)

    To prepare for PAT, the judge sometimes has to generate random passwords for the users. The problem ...

  9. 【PAT】1035. Password (20)

    题目:http://pat.zju.edu.cn/contests/pat-a-practise/1035 分析:简单题.直接搜索,然后替换,不会超时,但是应该有更好的办法. 题目描述: To pre ...

随机推荐

  1. Eclipse反编译插件jad的安装

    Eclipse反编译插件jad的安装 JadClipse是Jad的Eclipse插件,是一款非常实用而且方便的Java反编译插件.时间久了,可能忘记在哪里进行配置了,因此记录下以备后续使用(若需要). ...

  2. tkinter组件详解之Label

    tkinter组件详解之Label Label组件用于在屏幕上显示文本或图像.最红呈现出的结果是由背景和前景叠加构成的. 函数定义:Label(master=None, cnf={}, **kw) 背 ...

  3. 剑指offer_12.31_Day_1

    不用加减乘除做加法 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号.   不用四则运算,必然是依靠位运算. 位运算包括,与,或,异或,取反,左移,右移. 分别为 ...

  4. WebSocket实现简易聊天室

    前台页面: <html> <head> <meta http-equiv="Content-Type" content="text/html ...

  5. Python 中异常嵌套

    在Python中,异常也可以嵌套,当内层代码出现异常时,指定异常类型与实际类型不符时,则向外传,如果与外面的指定类型符合,则异常被处理,直至最外层,运用默认处理方法进行处理,即停止程序,并抛出异常信息 ...

  6. 实验吧Web-中-登陆一下好吗??

    题目上说:不要怀疑,我已经过滤了一切,还再逼你注入,哈哈哈哈哈! 可以试试,只要是输入的关键字都被过滤了,双写也被过滤掉了. 用万能密码发现,or被过滤掉了. 这里用到的是admin为:'=',密码为 ...

  7. EXCEL排序(hdu 1862)

    其实这个题吧,就是发出来玩玩,会用sort就很easy了,有一个小小的知识点:比较字符串字典序的大小用strcmp函数. strcmp(a,b)<0说明a的字典序小于b的字典序. 上题: Inp ...

  8. 2020年9大顶级Java框架

    诞生于1995年的Java,目前已在134,861个网站上广泛使用,包括ESPN.SnapDeal等.在其24年的成长史中,Java已经证明了自己是用于自定义软件开发的顶级通用编程语言. Java广泛 ...

  9. Cannot access android.support.v4.app.*

    解决办法: 添加到受影响的 module build.gradle 中(比如app的gradle文件根代码下) configurations.all { resolutionStrategy.each ...

  10. 一天一个设计模式——Composite组合模式

    一.模式说明 能够使容器与内容物具有一致性,创造出递归结构的模式就是Composite组合模式. 举个例子:计算机中的文件系统中有文件和文件夹的概念,我们知道,文件夹可以包含文件,也可以包含子文件夹, ...