杭电2734----Quicksum(C++)(数字与字符的关系)
2024-09-08 04:13:38
Quicksum
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 8353 Accepted Submission(s): 5614
Problem 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 = 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
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
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<cstdio>
#include<iostream>
using namespace std;
#include<string>
int main()
{
string str ;
while (getline(cin, str) && str != "#")
{
int sum = 0;
for (int i = 0; i < str.length(); i++)
{
if (str[i] != ' ')
sum = sum + (str[i]-'A'+1)*(i + 1);
}
cout << sum << endl;
}
return 0;
}
最新文章
- 使用excel计算指数平滑和移动平均
- scala 打印一个乘法口诀表 (<;<;scala 编程>;>; P87)
- iOS开发小技巧--判断控件是否显示在当前窗口
- 数据结构Java实现05----栈:顺序栈和链式堆栈
- Visual studio 2013的安装和单元测试
- SGU185 - Two Shortest
- EXCEL VBA运行不显示系统提示
- js获取设备信息
- 实现jul 日志重定向到 slf4j
- select可选择、同时可自行输入
- 常用Linux操作指令
- 2016 湖南省省赛 Problem A: 2016
- 推荐免费小巧图片大小处理工具--Image Resizer for Windows
- bzoj 4008 亚瑟王 期望概率dp
- 排列组合n选m算法
- css border 三角形
- Openssl源代码整理学习
- 洛谷 P1121 环状最大两段子段和 解题报告
- TensorBoard 简介及使用流程【转】
- 样条之CatmullRom