写码讲堂
1、B4500 [GESP202603 三级] 凯撒密码
(1)参考程序:
#include<iostream>
#include<string>
using namespace std;
int main(){
int d,a;
char c1,c2; //c1为明码首字符,c2为密码首字符。
string t;
cin.get(c1);
cin.ignore(1001,'\n'); //清除输入缓冲区字符,逐个丢弃1001个字符,直到遇到换行符 \n(即用户按下的回车键)为止,包括该换行符本身也会被丢弃。
cin.get(c2);
cin.ignore(1001,'\n');
cin>>t;
d=c1-c2; //c1=c2+d,d为解密移动量。
//cout<<c1<<" "<<c2<<" "<<d<<endl;
//cout<<t<<" "<<-2%26<<" "<<d;
a=(d<0)?90:65;
for(char ch:t) cout<<(char)(((ch-a)+d)%26+a);
return 0;
}
(2)编程原理,用小规模5到10六个数为例

此题数据是65到90二十六个数,根据上图进行数学建模。

浙公网安备 33010602011771号