zoukankan      html  css  js  c++  java
  • 【noip模拟赛1】古韵之同心锁

     

    据说在一座OI桥上,同心锁上显示的文字有着它奇异的呈现方式,需要你把它稍做改变才可解密。每个同心锁上都有3个数据。第一个数据是一个字符串s。第二个数据m表示把s串从m处分为两段,s[1]至s[m-1]为a串,s[m]至最后为b串。第三个数据n表示你需要做改变的方式。第4个数据表示把n处理后的s串每个字母变重复次数p,不用重复则为0。

    n=1时,把s串中所有大写字母改成小写字母,把所有小写字母改成大写字母,然后在后面加上‘Immorta1’;

    n=2时,从s串中删除所有出现的和b一样的子串,然后把所有出现的‘1013’改成‘hh4742’。

    n=3时,在a串部分的|n-m|-1和|n-m|之间插入b串,并删除b串部分。

    输入

     

    第一行有一个字符串s(长度不超过1993);

    第二行有3个数:m(1<m<s的长度)、n(1、2或3)、p(0<=p<100)。

    输出

     

    输出一个字符串,为经过多次变化后最终得到的s。

    输入样例 1 

    MEIYOUwsshujuBYhh4742
    14 1 1

    输出样例 1

    mmeeiiyyoouuWWSSSSHHUUJJUUbbyyHHHH44774422IImmmmoorrttaa11

    输入样例 2 

    oiBYhh4742MEIYOU1013hh4742wsshujuBYhh4742
    34 2 0

    输出样例 2

    oiMEIYOUhh4742hh4742wsshuju

    输入样例 3 

    ipkepk
    5 3 3

    输出样例 3

    iiiippppkkkkppppkkkkeeee




    非常好的字符串处理题 比赛的时候用char数组做耗费了好久时间 还没做出来。

    注意活用 s.substr(i,j) !!! //为string a 的第i个字符开始的j个字符

    体会到了string的强大
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<cstring>
    #include<iostream>
    using namespace std;
    //input
    #define RI(n) scanf("%d",&(n))
    #define RII(n,m) scanf("%d%d",&n,&m);
    #define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
    #define RS(s) scanf("%s",s)
    #define LL long long
    #define REP(i,N)  for(int i=0;i<(N);i++)
    #define CLR(A,v)  memset(A,v,sizeof A)
    //////////////////////////////////
    #define N 2000+5
    string s,ans;
    int main()
    {
        int m,n,cnt;
        cin>>s;
        cin>>m>>n>>cnt;
       string a=s.substr(0,m-1);
       string b=s.substr(m-1,s.size()-m+1);
        if(n==1)
        {
           REP(i,s.size())
             {
                 if(islower(s[i]))s[i]-=32;
                 else if(isupper(s[i]))s[i]+=32;
             }
            ans=s+"Immorta1";
        }
        else if(n==2)
        {
            int lens=s.size();
            int lenb=b.size();
            int i=0;
            string temp;
            while(i<lens)
            {
                if(s.substr(i,lenb)==b)i+=lenb;
                else temp+=s[i++];
            }
            i=0;
            while(i<temp.size())
            {
                if(temp.substr(i,4)=="1013")ans+="hh4742",i+=4;
                else  ans+=temp[i++];
            }
        }
        else
        {
            int k=abs(n-m)-1;
            string l=a.substr(0,k);
            string r=a.substr(k,a.size()-k);
            ans=l+b+r;
        }
        
        REP(i,ans.size())
         for(int j=0;j<=cnt;j++)
            cout<<ans[i];
         printf("
    ");
    }
    
    
  • 相关阅读:
    Outline of the research(updated 8th,Aug)
    Similarity metrics(Updated Aug,8th)
    Experiments on the NYC dataset(updated 7th,Aug)
    Fused Matrix Factorization & some personal thoughts (Updated 1st,Aug,afternoon)
    Java——图片读取与存储
    Java——setBounds的用法以及居中的方式
    linux 常用命令整理----解压缩
    周一01.4安装PyCharm步骤
    周一01.2 计算机硬件&操作系统
    周一01.3Python多版本共存&pip环境变量设置
  • 原文地址:https://www.cnblogs.com/bxd123/p/10500437.html
Copyright © 2011-2022 走看看