2020 CCPC Wannafly Winter Camp Day1 B 密码学( 模拟)
程序员文章站
2022-07-15 16:10:17
...
思路:模拟题,也没啥算法,老老实实逆着推就行了,只是一开始(x+y)%mod 52=t,要逆着推的话也就是已知x和t来求y,于是y=(52+t-x)%52,其他的就没啥难度了,看着很烦,做起来其实还行。
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e3+5;
int n,m,a[maxn],l[maxn],r[maxn];
string s[maxn];
void init()//预处理
{
for(int i=0,j='a';i<26;++i,++j) a[i]=j;
for(int i=26,j='A';i<52;++i,++j) a[i]=j;
for(int i='a',j=0;i<='z';++i,++j) a[i]=j;
for(int i='A',j=26;i<='Z';++i,++j) a[i]=j;
}
int main()
{
init();
scanf("%d %d",&n,&m);
for(int i=1;i<=m;++i)
scanf("%d %d",&l[i],&r[i]);
for(int i=1;i<=n;++i) cin>>s[i];
for(int i=m;i>=1;--i)
{
string t1=s[l[i]],t2=s[r[i]];
while(t1.size()<t2.size()) t1.append(t1);
int len=t2.size();
for(int i=0;i<len;++i)
t2[i]=a[(52+a[t2[i]]-a[t1[i]])%52];
s[r[i]]=t2;
}
for(int i=1;i<=n;++i) cout<<s[i]<<endl;
}
推荐阅读
-
2020 CCPC Wannafly Winter Camp Day1 A,B,E~I题解
-
2020 CCPC Wannafly Winter Camp Day1 F 乘法 (二分)
-
2020 CCPC Wannafly Winter Camp Day2 Div.1&2(A 托米的字符串)
-
2020 CCPC Wannafly Winter Camp Day1H
-
2020 CCPC Wannafly Winter Camp Day1 H 最大公约数(唯一分解定理)
-
2020 CCPC Wannafly Winter Camp Day1 F 乘法(二分)
-
2020 CCPC Wannafly Winter Camp Day1 B 密码学( 模拟)
-
2020 CCPC Wannafly Winter Camp Day1 Div.1&2(A题 期望逆序对)(找规律)
-
2020 CCPC-Wannafly Winter Camp
-
2020 CCPC Wannafly Winter Camp Day1 (部分题解)