题意:给你N串密码,问可不可以按照他给定的方法进行加密,若部分或全部可以则输出所有可以加密的密码串,若全部不可以则输出密码串的个数,1个和多个输出是有单复数的.
#include <iostream>
#include <string>
#include <cstring>
#include<cmath>
#include <vector>
#include <map>
#include <stdio.h>
using namespace std;
#define MAX 1005
#define INF 0x3f3f3f3f
struct Password {
string id, psd;
int flag = 0;
}p[MAX];
int main() {
int n,i,j;
scanf("%d", &n);
string s1, s2;
for (i = 0; i < n; i++) {
cin >> p[i].id >> p[i].psd;
}
int cnt = 0,flag=0,num=0;
for (i = 0; i < n; i++) {
int len = p[i].psd.length();
for (j = 0; j < len; j++) {
if (p[i].psd[j] == '1') {
p[i].psd[j] = '@';
p[i].flag = 1;
flag = 1;
}
else if (p[i].psd[j] == '0') {
p[i].psd[j] = '%';
p[i].flag = 1;
flag = 1;
}
else if (p[i].psd[j] == 'l') {
p[i].psd[j] = 'L';
p[i].flag = 1;
flag = 1;
}
else if (p[i].psd[j] == 'O') {
p[i].psd[j] = 'o';
p[i].flag = 1;
flag = 1;
}
else {
continue;
}
}
if (flag == 1) {
num++;
flag = 0;
}
}
if (num == 0) {
for (i = 0; i < n; i++) {
if (p[i].flag == 0)
cnt++;
}
if (cnt == 1){
printf("There is %d account and no account is modified\n", cnt);
}
else {
printf("There are %d accounts and no account is modified\n", cnt);
}
}
else {
printf("%d\n", num);
for (i = 0; i < n; i++) {
if (p[i].flag == 1) {
cout << p[i].id << " " << p[i].psd << endl;
}
}
}
return 0;
}