Quicksum

来源:互联网 发布:小爱和花儿知乎 编辑:程序博客网 时间:2024/05/21 09:42

A checksum is an algorithm that scans a packet of data and returns a single number. The idea is that if the packet is changed, the checksum will also change, so checksums are often used for detecting transmission errors, validating document contents, and in many other situations where it is necessary to detect undesirable changes in data.

For this problem, you will implement a checksum algorithm called Quicksum. A Quicksum packet allows only uppercase letters and spaces. It always begins and ends with an uppercase letter. Otherwise, spaces and letters can occur in any combination, including consecutive spaces.

A Quicksum is the sum of the products of each character's position in the packet times the character's value. A space has a value of zero, while letters have a value equal to their position in the alphabet. So, A=1, B=2, etc., through Z=26. Here are example Quicksum calculations for the packets "ACM" and "MID CENTRAL":

ACM: 1*1  + 2*3 + 3*13 = 46MID CENTRAL: 1*13 + 2*9 + 3*4 + 4*0 + 5*3 + 6*5 + 7*14 + 8*20 +
9*18 + 10*1 + 11*12 = 650

输入

The input consists of one or more packets followed by a line containing only # that signals the end of the input. Each packet is on a line by itself, does not begin or end with a space, and contains from 1 to 300 characters.

输出

For each packet, output its Quicksum on a separate line in the output.

样例输入

ACM
MID CENTRAL
REGIONAL PROGRAMMING CONTEST
ACN
A C M
ABC
BBC
#

样例输出

46
650
4690
49
75
14
15
#include<stdio.h>#include<string.h>int main(){while(1){int sum=0,i,j,s;char a[300];gets(a);if(a[0]=='#')//设置循环结束标志 break;s=strlen(a);for(i=0,j=1;i<s;i++,j++){if(a[i]==' ')//跳过空格 continue;if(a[i]>='A'&&a[i]<='Z');//设置范围取大写字母的值 {sum=sum+j*(a[i]-64);}}printf("%d\n",sum);} return 0;}




下面是题目的译文:

校验和是一个算法,扫描包的数据,并返回一个数字。我们的想法是,如果包改变,校验和也会改变,所以校验和通常用于检测传输错误,验证文档内容和在其他情况下,有必要检测不良数据的变化。

对于这个问题,您将实现一个名为Quicksum校验和算法。Quicksum包只允许大写字母和空格。它总是以一个大写字母开始和结束。否则,空间和信件可以发生在任意组合,包括连续空间。

Quicksum是笔的产品包中的每个字符的位置*字符的值。空间的值为0,而字母值等于字母表里他们的立场。所以,A = 1,B = 2,等等,通过Z = 26。下面是例子Quicksum计算数据包“ACM”和“中央中期”:

ACM: 1*1  + 2*3 + 3*13 = 46MID CENTRAL: 1*13 + 2*9 + 3*4 + 4*0 + 5*3 + 6*5 + 7*14 + 8*20 +
 9*18 + 10*1 + 11*12 = 650