【问题描述】给定明文x或者密文y,给定密钥k1和k2,得出加密后的密文x或者解密后的明文y
【输入形式】输入为3行:
第一行:需要加密的明文或者需要解密的密文;
第二行:密钥k1和k2;
第三行:选择对明文加密或者对密文解密(1表示加密,2表示解密)。
【输出形式】输出为一行:加密后的密文或者解密后的明文。
【样例输入1】
GUANGXINORMALUNIVERCITY
3 3
1
【样例输出1】
VLDQVUBQTCNDKLQBOPCJBIX
【样例输入2】
IRNYTKEHIYR
4 7
2
【样例输出2】
INFORMATION
#include<bits/stdc++.h>
using namespace std;
int main(){
char x[100],y[100];
scanf("%s",&x);
int s1;
int k1,k2; cin>>k1>>k2>>s1;
string s="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int str[100];
for(int i=0;i<strlen(x);i++){
for(int j=0;j< 26;j++){
if(x[i]==s[j]) {
str[i]=j;break;
}
}
}
if(s1==1){
int i=0;
while(i<strlen(x)){
int b=(k1+k2*str[i])%26;
cout<<s[b];
i++;
}
}else
{ int t;
for(int i=1;i<=26;i++){
if((i*k2)%26==1){
t=i;
break;
}
}
int j=0;
while(j<strlen(x)){
int b=(str[j]-k1)*t%26;
if(b<0) b=b+26;
cout<<s[b];
j++;
}
}
return 0;
}