1. 程式人生 > >洛谷 P1703 那個什麽密碼2

洛谷 P1703 那個什麽密碼2

scanf tdi b- range lan problem sin data else

P1703 那個什麽密碼2

題目背景

https://www.luogu.org/problem/show?pid=1079

題目描述

與原題一模一樣、具體不同請見輸入格式

輸入輸出格式

輸入格式:

第一行輸入密鑰

第二行輸入明文

第三行輸入一個正整數M,代表操作個數.

每個操作將[a,b]的字符全部倒轉,比如abc倒轉為cba.

接下來M行,每行輸入兩個正整數a,b。

輸出格式:

輸出一行,輸出密文。

輸入輸出樣例

輸入樣例#1: 復制
CompleteVictory
Wherethereisawillthereisaway
0
輸出樣例#1: 復制
Yvqgpxaimmklongnzfwpvxmniytm

說明

由zxy大神原創、本人在洛谷上傳。

思路:模擬。

吐槽:出題人的語文絕對不及格!!!!!(╯‵□′)╯︵┻━┻ 題目描述一點都不清楚。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
string s,k;
int n,miyao[5010];
int main(){
     cin
>>k>>s; int len=k.length(); for(int i=0;i<len;i++) for(int j=i;j<5010;j+=len){ if(k[i]>=A&&k[i]<=Z) miyao[j]=(int)(k[i]-A); else miyao[j]=(int)(k[i]-a); } len=s.length(); for(int i=0;i<len;i++){
if(s[i]>=A&&s[i]<=Z){ if(s[i]+miyao[i]>Z) s[i]=s[i]+miyao[i]-26; else s[i]=s[i]+miyao[i]; } else{ if(s[i]+miyao[i]>z) s[i]=s[i]+miyao[i]-26; else s[i]=s[i]+miyao[i]; } } scanf("%d",&n); while(n--){ int a,b; scanf("%d%d",&a,&b); string t1=s.substr(0,a-1); string t2=s.substr(a-1,b-a+1); string t3=s.substr(b,s.length()-b); reverse(t2.begin(),t2.end()); s=t1+t2+t3; } cout<<s<<endl; }

洛谷 P1703 那個什麽密碼2