题目描述
输入数据只由26个大写字母和空格组成,并且开始和结束的字符一定是大写字母。除此之外,它可以任意组合,包括出现连续空格。
求和的算法是每个字母的位置号和字母值乘积的总和。空格的值为0,字母的值按照字母表顺序取值,比如A=1,B=2。下面是"ACM"和"MID CENTRAL"计算和的例子:
ACM: 11 + 23 + 313 = 46
MID CENTRAL: 113 + 29 + 34 + 40 + 53 + 65 + 714 + 820 + 918 + 101 + 1112 = 650
输入
一行,由大写字母或空格组成,最多有255个字符。
输出
一行,计算出的和。
样例
输入1 复制
ACM
输出1 复制
http://www.jzoj.cn/problem.php?id=3844 复制
MID CENTRAL
输出2 复制
见http://www.jzoj.cn/problem.php?id=3844
?%ra=link
以下代码可供题主参考:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i,num,sum;
char s[256];
while(gets(s),s[0]!= '#') //循环输入字符串 以 # 结束
{
sum= 0;
num=strlen(s);
for(i=0; i<num; i++)
{
if(s[i]==' ')
{
sum+=0;
}
else if(s[i]>='A' && s[i]<= 'Z')
{
sum+=(i+1)*(s[i]-'A'+1);
}
}
printf("%d\n", sum);
}
}
运行结果如图:
#include <iostream>
int main()
{
std::string string;
std::getline(std::cin, string);
int sum = 0;
for (std::size_t i = 0; i < string.length(); i++)
{
if (string[i] == ' ')
continue;
sum += (string[i] - 'A' + 1) * (i + 1);
}
printf("%d", sum);
return 0;
}