现在的位置: 首页 > 综合 > 正文

POJ_3094

2018年04月13日 ⁄ 综合 ⁄ 共 1827字 ⁄ 字号 评论关闭

一.题目

Quicksum
Time Limit: 1000MS
Memory Limit: 65536K
Total Submissions: 14083
Accepted: 9839

Description

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 = 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

Input

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 255 characters.

Output

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

Sample Input

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

Sample Output

46
650
4690
49
75
14
15

Source


二.解题技巧

    完全水题,按照说明进行即可。


三.实现代码

 

#include <iostream>
#include <string>

using namespace std;

void Deal(const string& InputString)
{
    const char* Array = InputString.c_str();
    int Length = InputString.size();
    int Value = 0;
    long Result = 0;

    for (int Index = 0; Index < Length; Index++)
    {
        Value = Array[Index];
        if (Value == ' ')
        {
            Value = 0;
        }
        else
        {
            Value = Value - 'A' + 1;
        }
        Result = Result + Value * (Index + 1);
    }

    cout << Result << endl;

}


int main()
{
    string InputString;

    while(true)
    {
        getline(cin, InputString);
        if (InputString[0] == '#')
        {
            break;
        }
        Deal(InputString);
    }

    return 0;
}

  



四.体会

    注意等号。





版权所有,欢迎转载,转载请注明出处,谢谢微笑

抱歉!评论已关闭.