#include<cstdio>
#include<cstring>
const int maxn=1e4+5;
char j[maxn],o[maxn],str2[maxn];//1,2,3
char q2[maxn];//4
char str[maxn];
int prime(int x,int n,int ans){
if(x>n) return ans;
if(!(n%x)) ans++;
prime(++x,n,ans);
}
int is_prime[maxn];
void init_is_prime(){
for(int i=2;i<=maxn;i++)
is_prime[i]=!is_prime[i];
}
void init1(int m){
init_is_prime();
for(int i=2;i<=m;i++){
if(is_prime[i])
for(int j=i*2;j<=m;j+=i)
is_prime[j]=!is_prime[j];
}
}
void clear(int n,char c){
for(int i=0;i<n;i++){
if(c=='1')
j[i]=0;
else if(c=='2')
o[i]=0;
else if(c=='3')
str2[i]=0;
else
q2[i]=0;
}
}
namespace String{
void f1(int n){
int len1=-1,len2=-1;
for(int i=0;i<n;i++){
if(i==0)
o[++len1]=str[i];
else{
if(i%2)
j[++len2]=str[i];
else
o[++len1]=str[i];
}
}
int biglen=len1+len2;
for(int i=0;i<biglen;i++){
if(i<(biglen-len2))
str2[i]=j[i];
else
str2[i]=o[(biglen-len2)+(i-len2)];
}
for(int i=0;i<biglen;i++)
str[i]=str2[i];
clear(len2,'1');
clear(len1,'2');
clear(biglen,'3');
}
void f2(int n){
for(int i=0,j=n-1;i>n&&j>-1;i++,j--)
q2[i]=str[j];
for(int i=0;i<n;i++)
str[i]=q2[i];
clear(n,'4');
}
void f3(int n){
for(int i=0;i<n;i++){
if(str[i]<'y'&&str[i]>='a')
str[i]++;
else if(str[i]<'Y'&&str[i]>='A')
str[i]++;
}
}
};
int main(){
scanf("%s",str);
int n=strlen(str);
int m=prime(1,n,0);
init1(n);
bool flag=false;
for(int i=1;i<=n;i++)
if(is_prime[i]){
flag=!flag;
break;
}
for(int i=0;i<m;i++){
String::f1(n);
if(flag) String::f2(n);
String::f3(n);
}
for(int i=0;i<n;i++)
printf("%c",str[i]);
return 0;
}
file:///C:/Users/guoli/Documents/WeChat Files/wxid_ea0romtkexpt21/FileStorage/File/2024-04/加密规则.pdf
这是加密规则,要解密的是Bnnge_anS_CQe_Hiha__u_D_giinhiii_g__Wn_hShunGe_inXMaSaJ_
求助,玄关