[FZYZOJ 1339] 修改密码

P1339 -- 修改密码

时间限制:1000MS

内存限制:131072KB

Description

柯南知道小兰破解了他设置的密码,所以他决定把密码改掉。为了防止再次被破解,他定义了一系列命令用来修改并检验自己的密码:

1、Insert C:表示在光标后插入C这个字符,光标在插入的字符前;

2、Delete:表示删除光标后的字符(保证光标不在密码尾端);

3、Next:表示将光标向后移一个字符(保证光标不在密码尾端);

4、Prev:表示将光标向前移一个字符(保证光标不在密码首端)。

5、Print N:表示输出密码第N位,输出的字符占一行(Print命令少于10个)。

柯南会先给出一个初始密码,光标在第一个字符前。他希望你编一个程序来实现这些命令,并给出修改后的最终密码。

Input Format

第一行为一个字符串,表示初始密码。

接下来每行一个命令,命令格式如题目描述所示。

输入保证任意时刻密码的长度不会超过1000000。

Output Format

对于每个Print命令,输出一个字符,每个字符占一行。

最后一行输出最终密码。

Sample Input

Mdeify
Print 3
Next
Next
Delete
Print 3
Prev
Insert o
Print 3

Sample Output

e
i
d
Modify

【题解】本题明显链表题目,开2倍的数组即可,用来练练手。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 char pwd[2000100];
 4 int len;
 5 int next[2000100],prev[2000100],cs=1;
 6 int main() {
 7     scanf("%s",pwd+1);
 8     len=strlen(pwd+1);
 9     //for (int i=len;i>=1;--i) pwd[i]=pwd[i-1];
10     for (int i=1;i<=len;++i) {
11         prev[i]=i-1;
12         next[i-1]=i;
13     }
14     len++;
15     char opt[1000];
16     while(~scanf("%s",opt)) {
17         if (opt[2]==‘i‘) {
18             int x,a=1,b=0;
19             scanf("%d",&x);
20             while(a<=x) {
21                 b=next[b];
22                 a++;
23             }
24             printf("%c\n",pwd[b]);
25         }
26         if(opt[0]==‘N‘) cs=next[cs];
27         if(opt[3]==‘v‘) cs=prev[cs];
28         if(opt[0]==‘D‘) {
29             next[prev[cs]]=next[cs];
30             prev[next[cs]]=prev[cs];
31             cs=next[cs];
32         }
33         if(opt[0]==‘I‘) {
34             char k;
35             scanf(" %c",&k);
36             pwd[len]=k;
37             prev[len]=prev[cs];
38             next[len]=cs;
39             next[prev[cs]]=len;
40             prev[cs]=len;
41             cs=len;
42             len++;
43         }
44     }
45     for (int i=0;next[i];i=next[i]) printf("%c",pwd[next[i]]);
46     return 0;
47 }

时间: 2024-08-04 12:09:55

[FZYZOJ 1339] 修改密码的相关文章

在Exchange 2013 OWA登录页面中修改密码

透过OWA登录界面改密码对于使用Exchange的用户来说是一个很有有用的功能. 因为如果用户不在公司域环境中,当密码已经到期登录不了OWA,就没有办法通过OWA中的[选项]来改密码,当开启这项功能后,管理员和用户都可以很方便的处理密码到期的case. 早在Exchange2010的时候,我们需要通过修改CAS服务器的注册表项来实现这个功能.现在的Exchange2013已经内置了该功能,使用前只需要确认该功能属性的状态就可以了. 在最新的Exchange2013 SP1和CU5版本中,此功能在

Win7修改密码策略

第一步.Win+R打开cmd窗口输入gpedit.msc 第二步.修改密码策略(打开"计算机配置"-->"安全设置"-->"账户策略"-->"密码策略") 第三步.修改密码复杂度.密码使用期限 第四步.设置密码锁定次数 第五步.cmd下设置密码[net user administrator Hell0!jie]

MySQL5.7修改密码

MySQL5.7出来蛮久了,今天用官方的RPM包安装玩了一遍,与值之前的版本有些差异,MARK下. OS PLATFORM:Centos 7.3 安装MySQL 5.7版本,官网http://dev.mysql.com/downloads/repo/yum/ rpm -ivh  http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm YUM安装: yum -y install mysql-community-serv

mysql 5.1版本 修改密码,及远程登录mysql数据库

mysql创建用户并授权:   格式:grant 权限 on 数据库名.表名 to 用户@登录主机 identified by "用户密码"; grant[英][grɑ:nt]   承认; 同意; 准许; 授予;  例1:允许mk用户从localhost登录 mysql>  grant all on book.* to [email protected] identified by "123456";  #允许访问book数据库下的所有表, 只能访问book表

mysql多实例忘记root密码,修改密码

1.修改配置参数 /etc/my.cnf 在 [mysqld3306] 下面加上: skip-grant-tables 2.重启MySQL mysqld_multi start 3306 3.修改密码 mysql -h127.0.0.1 -P3306 -uroot update mysql.user set password=password('test_new2_password') where user= 'root'; flush privileges; 关闭数据库 mysqld_mult

mysq安装以及修改密码

安装版MySQL是不能一键安装的,下载下来是压缩包,解压后只要进行相关配置就可以正常使用: 文章主要是记录一下,以防自己忘记: 1.首先在mysql官网--http://dev.mysql.com/downloads/mysql/  下载mysql: 2.下载后解压到对应路径 我是放在 D:\mysql-5.7.14-winx64\ 里面,解压完后改名,可以自己进行重命名: 3.配置环境变量 找到--高级系统变量--环境变量--系统变量 新建环境变量:变量名 MYSQL_HOME,变量值 D:\

python 随机远程主机修改密码

执行脚本需要有以下前提: 主机与客户机配置互信(ssh 无密码认证登录) 需要读取当前目录下的host文件,里面是连接远程主机的ip地址 脚本可以修改远程主机为ubuntu和centos的密码 代码如下: #!/usr/bin/env python #coding:utf-8 import paramiko import platform import sys,os import threading import time def color_print(msg, color='red', ex

mysql数据库忘记密码后如何修改密码

当我们忘记mysql数据库密码时我们就无法正常进入数据库,也就无法修改密码,那么这时该怎么修改密码呢,这里教大家一个简单常用修改密码的方式. 方法/步骤 1 打开mysql.exe和mysqld.exe所在的文件夹,复制路径地址 2 打开cmd命令提示符,进入上一步mysql.exe所在的文件夹. 3 输入命令  mysqld --skip-grant-tables  回车,此时就跳过了mysql的用户验证.注意输入此命令之后命令行就无法操作了,此时可以再打开一个新的命令行.注意:在输入此命令之

centos7下mariadb 首次修改密码及忘记密码处理方法

首次修改密码 第一种 >mysqladmin -u root -p[oldpass] password newpass 注意oldpass(老密码)可选,如果root默认密码为空,则不需要输入 如果需要更改老密码,请注意老密码与-p之间不要有空格,否则会报错,另外password和newpass(新密码)之间以空格分隔. 第二种 初始化数据库 /usr/local/mysql/bin/mysql_secure_installation                yum安装是在/usr/bin