为什么估计没问题,结果出来全是乱码?
查看原帖
为什么估计没问题,结果出来全是乱码?
913288
3_14楼主2024/1/9 21:49

贴上我的代码:

请大佬指点一下

#include<bits/stdc++.h>
using namespace std;
const int MAX=1e3+1;
const int MAx=26*26+2;
char MM[MAx]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
string k,m;
bool g[MAX]={0};
string ToBig(string a){
	for(int i=0;i<a.size();i++){
		if('a'<=a[i]&&a[i]<='z'){
			a[i]-='a';
			g[i]=true;
		}
	}
	return a;
}
string ToBack(string a,bool f[]){
	for(int i=0;i<a.size();i++){
		if(g[i]){
			a[i]+='a';
		}
	}
	return a;
}
string z_Long(int l,string ke){
	string sum="";
	int t=0;
	for(int i=0;i<l;i++){
		sum+=ke[t];
		if(t==ke.size()){
			t=0;
		}else{
			t++;
		}
	}
	return sum;
}
string J(char a,char b){
	int ch=(a-'a')-(b-'a');
	return to_string(MM[ch]);
}
string m_Txt(string Key,string C){
	Key=z_Long(C.size(),Key);
	string ans="";
	for(int i=0;i<C.size();i++){
		ans+=J(C[i],Key[i]);
	}
	return ToBack(ans,g);
}
int main(){
	cin>>k>>m;
	k=ToBig(k);
	m=ToBig(m);
	string M=m_Txt(k,m);
	cout<<M<<'\n';
	return 0;
}
2024/1/9 21:49
加载中...