checksum 是扫描一个数据包并返回一个数值的一种算法。其思路在于,如果数据包被修改过,那么,checksum 也会立即变化。所以,checksum 常常用于侦查数据传输错误,证
实文档内容的完整性和其他需要检查数据不被修改的场合。
在本题中,你将实现一个 checksum 算法即 Quicksum。一个 Quicksum 数据包仅允许包含大写字母和空格,它通常是由一个大写字母开始和结束。然而,空格和字母可以出现在
其他的位置中,连续的空格也是允许的。
Quicksum 是一行字符串(数据包)中每个字符的位置与该字符的值的乘积之和。空格的值是 0,字母的值等于它在字母表中的位置。所以,A 的值是 1,B 的值是 2,依此类推,Z 的值是 26。下面两个例子是求“ACM”和“MID CENTRAL”的 Quicksum:
ACM: 1*1 + 2*3 + 3*13 = 46
MID CENTRAL: 1*13 + 2*9 + 3*4 + 4*0 + 5*3 + 6*5 + 7*14 + 8*20 + 9*18 + 10*1 +11*12 = 650
2.输入描述
输入数据包含一个或多个数据包,输入数据以“#”结束。每个数据包占一行,不能以空格开始或结束,
包含 1~255 个字符。
3.输出描述
对于每个数据包,在每一行上输出它的 Quicksum。
#include
#include
#include
using namespace std;
int main()
{
ifstream file("aaa.txt");
double sum=0;
string s;
int i;
//char ch[100];
while(getline(file,s))
{
if(s[0]=='#') break;
for(i=0;s[i]!='\0';i++)
if(s[i]!=' ') sum = sum+i*(s[i]-64);
cout<<sum<<endl;
sum=0;
}
return 0;
}
checksum 是扫描一个数据包并返回一个数值的一种算法。其思路在于,如果数据包被修改过,那么,checksum 也会立即变化。所以,checksum 常常用于侦查数据传输错误,证
实文档内容的完整性和其他需要检查数据不被修改的场合。
在本题中,你将实现一个 checksum 算法即 Quicksum。一个 Quicksum 数据包仅允许包含大写字母和空格,它通常是由一个大写字母开始和结束。然而,空格和字母可以出现在
其他的位置中,连续的空格也是允许的。
Quicksum 是一行字符串(数据包)中每个字符的位置与该字符的值的乘积之和。空格的值是 0,字母的值等于它在字母表中的位置。所以,A 的值是 1,B 的值是 2,依此类推,Z 的值是 26。下面两个例子是求“ACM”和“MID CENTRAL”的 Quicksum:
ACM: 1*1 + 2*3 + 3*13 = 46
MID CENTRAL: 1*13 + 2*9 + 3*4 + 4*0 + 5*3 + 6*5 + 7*14 + 8*20 + 9*18 + 10*1 +11*12 = 650
2.输入描述
输入数据包含一个或多个数据包,输入数据以“#”结束。每个数据包占一行,不能以空格开始或结束,
包含 1~255 个字符。
3.输出描述
对于每个数据包,在每一行上输出它的 Quicksum。
#include
#include
#include
using namespace std;
int main()
{
ifstream file("aaa.txt");
double sum=0;
string s;
int i;
//char ch[100];
while(getline(file,s))
{
if(s[0]=='#') break;
for(i=0;s[i]!='\0';i++)
if(s[i]!=' ') sum = sum+i*(s[i]-64);
cout<<sum<<endl;
sum=0;
}
return 0;
}