用户:
小Yiiiii查看:0 回复:0 评论:0 创建时间:2023-08-01T16:02:41
上次作者答案:(c++)
#include <bits/stdc++.h>
using namespace std;
long long a[10000],c,e[10000],f[10000],g[10000],h[10005],blen,hlen=10004,pd=1;
char b[10005];
int main(){
cin>>b;
blen=strlen(b);
for(int i=0;i<blen;i++){
h[i]=b[blen-1-i]-'0';
}
a[0]=1;
f[0]=2;
while(pd){
pd=0;
for(int i=125;i>=0;i--){
g[i]=a[i];
e[i]=f[i];
f[i]=0;
}//初始化
for(int i=0;i<63;i++){
for(int j=0;j<63;j++){
f[i+j]+=e[i]*e[j];
f[i+j+1]+=f[i+j]/100000000;
f[i+j]=f[i+j]%100000000;
}
}//平方
if(h[0]%2){
for(int i=125;i>=0;i--)a[i]=0;
for(int i=0;i<63;i++){
for(int j=0;j<63;j++){
a[i+j]+=e[i]*g[j];
a[i+j+1]+=a[i+j]/100000000;
a[i+j]=a[i+j]%100000000;
}
}
}
h[0]/=2;
for(int i=1;i<=10004;i++){
if(h[i]%2){
h[i-1]+=5;
}
h[i]/=2;
}
for(int i=hlen;i>=0;i--){
hlen=i;
if(h[i]!=0){
pd=1;
break;
}
}
}
for(int i=62;i>=0;i--){
if(a[i]<10000000)cout<<0;
if(a[i]<1000000)cout<<0;
if(a[i]<100000)cout<<0;
if(a[i]<10000)cout<<0;
if(a[i]<1000)cout<<0;
if(a[i]<100)cout<<0;
if(a[i]<10)cout<<0;
cout<<a[i];
}
return 0;
}
现在有3种对字符串的加密方法
1.把字符串中x到y的字母后移n位
2.把字符串中x到y的字母翻转
3.把字符串中x到y的字母大小写翻转
现在给出字符串及字符串的加密方式,请求出字符串加密后的结果。
输入格式
第一行一个整数m,表示加密次数。
第二行输入字符串。
接下来m行格式如下:
1 x y n
2 x y
3 x y
表示3中加密方式的一种。
输出格式
输出字符串加密后的结果。
样例:
2
abcdefg
1 1 5 3
2 1 7
输出:
gfhgfed
数据范围
保证字符串长度不超过1000,1<m<100