Quicksum
2016-06-23 19:33
549 查看
Quicksum Time Limit: 2 Seconds Memory Limit: 65536 KB 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. Example Input: Example Output: ACM MID CENTRAL REGIONAL PROGRAMMING CONTEST ACN A C M ABC BBC # 46 650 4690 49 75 14 15 来源: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1812
#include <cstdio> #include <cstring> char A[300]; long long Cal(void) { int len=strlen(A); long long ans=0; for(int i=0;i<len;i++) if(A[i]!=' ') ans+=((i+1)*(A[i]-'A'+1)); return ans; } int main(void) { while(gets(A)!=NULL) { if(A[0]=='#') break; else printf("%d\n",Cal()); } }
相关文章推荐
- 穿透事件
- android 程序中res/values-v14/styles.xml报错的解决办法
- UE4-编译UE4源码
- UE4-获取UE4
- 终于懂了:两个UI组件同时在操作是不可能实现的
- UITableViewCell的操作(增加cell,删除cell,插入cell)
- 支付回调 当uid有“_"时
- getRequestDispatcher 和sendRedirect区别
- UE4-认识UE4
- EASYUI 表单(FORM)用法
- git-quick-start 动画讲解Git命令行
- 基于request.getAttribute与request.getParameter的区别详解
- Android高阶UI之一个实用的多条件筛选菜单
- 大三学生暑假到传智播客培训UI设计,不料竟被坑
- 传智播客UI设计结束了我脑袋别在裤腰带上的生活
- shareSDK自定义分享界面UI
- DNS测试工具querperf
- log4j:ERROR setFile(null,true) call failed.
- iOS动态改变UITableView的tableViewHeader的高度
- 循环结构中break和continue的替代方法(Repetition without break and continue statement)