⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1006_net.cpp

📁 ACM1000_1010竞赛的赛题,源码
💻 CPP
字号:
//AC
#include<iostream.h>
#include<string.h>

char ciphertext[70], plaintext[70];
int  ciphercode[70], plaincode[70];
int  size, key;

void text2code()
{
	for(int i=0; i<size; i++) {
		if (ciphertext[i]==46) {ciphercode[i]=27; continue;}
		if (ciphertext[i]==95) {ciphercode[i]= 0; continue;}
		ciphercode[i]=ciphertext[i]-96;
	}
}
void code2text()
{
	for(int i=0; i<size; i++) {
		if (plaincode[i]== 0) {plaintext[i]=95; continue; }
		if (plaincode[i]==27) {plaintext[i]=46; continue; }
		plaintext[i]=plaincode[i]+96;
	}
}

void untwist()
{
	for( int i=0; i<size; i++){
		plaincode[key*i%size]=(ciphercode[i]+i)%28;
	}
}

int main()
{
	while (cin>>key) {
		if (key==0) break;
		cin>>ciphertext;
		size=strlen(ciphertext);
		text2code();
		untwist();
		code2text();
		plaintext[size]='\0';
		cout<<plaintext<<endl;
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -