记录一下,最近在整ACM的东西
题目
Quicksum
checksum 是扫描一个数据包并返回一个数值的一种算法。其思路在于,如果数据包被
修改过,那么,checksum 也会立即变化。所以,checksum 常常用于侦查数据传输错误,证
实文档内容的完整性和其他需要检查数据不被修改的场合。
在本题中,你将实现一个 checksum 算法即 Quicksum。一 个 Quicksum 数据包仅允许包含大写字母和空格,它通常是由一个大写字母开始和结束。然而,空格和字母可以出现在其他的位置中,连续的空格也是允许的。
Quicksum 是一行字符串(数据包)中每个字符的位置与该字符的值的乘积之和。空格
的值是 0,字母的值等于它在字母表中的位置。所以,A 的值是 1,B 的值是 2,依此类推,Z 的值是 26。下面两个例子是求“ACM”和“MID CENTRAL”的 Quicksum:
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
输入描述
输入数据包含一个或多个数据包,输入数据以“#”结束。每个数据包占一行,不能以空格开始或结束,包含 1~255 个字符。
输出描述
对于每个数据包,在每一行上输出它的 Quicksum。
输入样例 输出样例
ACM
MID CENTRAL
REGIONAL PROGRAMMING CONTEST
CAN
A C M
ABC
BBC
#
46
650
4690
49
75
14
15
#include<iostream>
#include<string>
using namespace std;
int main()
{
char ch[256];
int sum;
while(cin.getline(ch,256))
{
if(ch[0] == '#')
{
break;
}
sum = 0;
for(int i=0;ch[i] != '\0';i++)
{
if(ch[i] != ' ')
{
sum += (i+1)*(ch[i] - 64);
}
}
cout<<sum<<endl;
}
}
以上,数据的读入,按照一行一行的方式读入数据,可以直接忽视掉'\n'
#include<iostream>
#include<string>
using namespace std;
int main()
{
char ch;
int sum;
int i ;
i = 1;
sum = 0;
while(cin.get(ch))
{
if(ch == '#')
{
break;
}
if(ch != '\n')
{
if(ch != ' ')
{
sum += i*(ch - 64);
}
i++;
}
if(ch == '\n')
{
cout<<sum<<endl;
sum = 0;
i = 1;
}
}
return 0;
}
而,cin.get()函数,是一个一个的读入字符,cin.get()函数不会忽视掉'\n',因此,需要对回车符进行单独处理。
A~Z的值对应1~26,而A的ASCII为65,因此,A对应的值,就是ch-64。
分享到:
相关推荐
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, ...
【标题】"POJ3094-Quicksum" 是北京大学在线编程平台POJ上的一道题目,这道题目主要考察的是快速求和算法。快速求和,顾名思义,是在较短的时间内计算一系列数字之和的技术,通常与高效的数据结构和算法设计有关。 ...
SCIP Python 接口学习手册 SCIP(Solving Constraint Integer Programs)是一个开源的数学优化求解器,用于解决混合整数规划问题。Python 是一种流行的编程语言, PySCIPOpt 是 SCIP 的 Python 接口,提供了一个...
【标题】"HDOJ 80题 Java"是一份专为Java程序员设计的在线编程挑战集合,源自杭州电子科技大学(HDOJ)的在线评测系统。这些题目旨在帮助Java开发者提升算法理解与编程能力,同时也为那些习惯于C++但希望在Java环境...
model.setObjective(gb.quicksum(calculate_distance(customer_position)[i, j] * x[i, j] for i, j in A), gb.GRB.MINIMIZE) # 约束条件 model.addConstrs((gb.quicksum(x[i, j] for j in V if j != i) == 1 ...