1.题目(特殊乘法)
对两个小于1000000000的输入,求特殊乘法的结果
特殊乘法举例:12345 = 14+15+24+25+34+3*5.
样例
样例输入
123 45
样例输出
54
代码
#include <iostream>
#include <string>
using namespace std;
int main(){
string m,n;
while(cin >> m >> n){
int answer = 0;
for(int i = 0; i < m.size(); i++){
for(int j = 0; j < n.size(); j++){
//此处使用ASCII码字符间的差值
answer += (m[i] - '0') * (n[j] - '0');
}
}
printf("%d\n", answer);
}
return 0;
}
2.初级题目(秘密翻译)(字母均向后移动一个)
一种最简单的加密方法,对给定的一个字符串,将其从a~y的字母和从A-Y的字母用其后续字母代替,将z和Z用a和A替代,可得到一个简单的加密字符串。
样例
输入
Hello! how are you!
输出
Ifmmp! Ipx bsf zpv!
代码
#include <iostream>
#include <string>
using namespace std;
int main(){
string s;
//使用getline()函数来返回一行字符串,用此函数可以解决空格问题
while(getline(cin, s)){
for(int i = 0; i < s.size(); i++){
if(s[i] == 'z' || s[i] == 'Z'){
//若是最后一个,需要返回到第一个字母
s[i] -= 25;
}else if((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z')){
s[i]++;
}
}
cout << s << endl;
}
return 0;
}
3.进阶题目(秘密翻译)(字母均向后移动若干个)
密文:A B C D E F G H I J K …Z
明文:V W X Y Z A B C D E F…U
样例
1.起始行:一行,包括字符串“START”
2.密文:一行,给出密文
3.结束行:一行,包括字符串“END”
样例输入
START
NS BFW,JAJSYX
END
START
N BTZQI
END
START
IFSLJW PSTBX
END
样例输出
IN WAR,EVENTS
I WOULD
DANGER KNOWS
代码
#include <iostream>
#include <string>
using namespace std;
int main(){
string s;
while(getline(cin, s)){
if(s == "ENDOFINPUT"){
break;
}
getline(cin, s);
for(int i = 0; i<s.size(); i++){
if(s[i] >= 'A' && s[i] <= 'Z'){
s[i] = (s[i] - 'A'+26-5)%26 + 'A';
}
}
cout << s << endl;
getline(cin, s);
}
return 0;
}