社区讨论

4个点TLE??????(请求开放数据下载)

P1906凯撒密码参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@locvsrw8
此快照首次捕获于
2023/10/30 20:33
2 年前
此快照最后确认于
2023/11/05 07:04
2 年前
查看原帖
代码如下:
CPP
#include <iostream> 
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
int key;
string tmp;
void findkey(string tmp){
	int buc[30];
	memset(buc,0,sizeof(buc));
	for(int i=0;i<tmp.size();i++){
		if(tmp[i]>='a'&&tmp[i]<='z')tmp[i]-=('a'-'A');
	}
	for(int i=0;i<tmp.size();i++){
		if(tmp[i]<'A'||tmp[i]>'Z')continue;
		buc[tmp[i]-'A']++;
	}
	key=0;
	for(int i=0;i<26;i++){
		if(buc[i]>buc[key])key=i;
	}
	key=4-key;
}

void change(string &tmp){
	for(int i=0;i<tmp.size();i++){
		if(tmp[i]>='a'&&tmp[i]<='z')tmp[i]-=('a'-'A');
	}
	for(int i=0;i<tmp.size();i++){
		if(tmp[i]<'A'||tmp[i]>'Z')continue;
		tmp[i]+=key;
		if(tmp[i]<65)tmp[i]=90-65+tmp[i]+1;
		if(tmp[i]>90)tmp[i]=65+tmp[i]-90+1;
	}
}

int main(){
	int n=1;
	int r=1;
	while(1){
		getline(cin,tmp);
		if(tmp=="ENDOFINPUT")break;
		if(r==1)r++;
		else if(r==3)r=1;
		else{
			if(n==1)findkey(tmp);
			change(tmp);
			cout<<tmp<<endl;
			n++;
			r++;
		}	
	}
	return 0;
}
请求开放数据下载

回复

2 条回复,欢迎继续交流。

正在加载回复...