假设A=1,B=2,以此类推;a=27,b=28以此类推;空格=0。对于输入的字符串,加密的结果就是字符串每一位对应的数值乘以这一位下标之和,下标从1开始。比如ACEe加密的过程如下:
ACEeA加密为:1×1 + 2×3 + 3×5 + 4×31 + 5×1= 151
Input Format
一行字符串,保证只包含大小写字母和空格。字符串长度不超过1000,并且首位和末位不是空格。
Output Format
一个数字,表示加密结果。
假设A=1,B=2,以此类推;a=27,b=28以此类推;空格=0。对于输入的字符串,加密的结果就是字符串每一位对应的数值乘以这一位下标之和,下标从1开始。比如ACEe加密的过程如下:
ACEeA加密为:1×1 + 2×3 + 3×5 + 4×31 + 5×1= 151
Input Format
一行字符串,保证只包含大小写字母和空格。字符串长度不超过1000,并且首位和末位不是空格。
Output Format
一个数字,表示加密结果。
来个 C++11
风格的:
#include <algorithm>
#include <cassert>
#include <string>
#include <iostream>
int encrypt(const std::string& content) {
auto i = 1;
return std::accumulate(content.begin(), content.end(), 0, [&](const int& a, char b) {
char c;
if (b >= 'A' && b <= 'Z')
c = b - 'A' + 1;
else if (b >= 'a' && b <= 'z')
c = b - 'a' + 26 + 1;
else if (b == ' ')
c = 0;
else
assert(false);
return a + c * i++;
});
}
int main()
{
std::string s("ACEeA");
std::cout << "encrypt ret: " << encrypt(s) << std::endl;
}
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.5k 阅读
1 回答3.3k 阅读
for循环。思路在于ASCII码值的使用,还有字符串下标的利用。上代码,楼主收代码。