TJU Problem 2520 Quicksum
注意:
for (int i = 1; i <= aaa.length(); i++)
其中是“ i <= ",注意等号。
原题:
Time Limit: 0.5 Seconds Memory Limit: 65536K
Total Runs: 2964 Accepted Runs: 1970
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.
Example Input: | Example Output: |
ACM MID CENTRAL REGIONAL PROGRAMMING CONTEST ACN A C M ABC BBC # |
46 650 4690 49 75 14 15 |
Source: Mid-Central USA
2006
源代码:
1 #include <iostream> 2 #include <cctype> 3 #include <string> 4 using namespace std; 5 6 int main() { 7 string aaa; int sum = 0; 8 while (getline(cin, aaa) && aaa != "#") { 9 for (int i = 1; i <= aaa.length(); i++) { 10 if (isalpha(aaa[i - 1])) sum += i * (aaa[i - 1] - 'A' + 1); 11 //cout << "sum["<<i<<"] "<<sum << endl; 12 } 13 cout << sum << endl; 14 sum = 0; 15 } 16 return 0; 17 }