猫史档案馆


每日一题(c++、Python)第二天

用户:小Yiiiii小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

 


回复

上一页1 页 / 共 0下一页