为什么会Output Limit Exceed

作者在 2011-04-05 12:41:15 发布以下内容

checksum是扫描一个数据包并返回一个数值的一种算法。其思路在于,如果数据包被修改过,那么,checksum也会立即变化。所以,checksum常常用于侦查数据传输错误,证实文档内容的完整性和其他需要检查数据不被修改的场合。
在本题中,你将实现一个 checksum算法即 Quicksum。一个 Quicksum数据包仅允许包含大写字母和空格,它通常是由一个大写字母开始和结束。然而,空格和字母可以出现在其他的位置中,连续的空格也是允许的。
Quicksum是一行字符串(数据包)中每个字符的位置与该字符的值的乘积之和。空格的值是 0,字母的值等于它在字母表中的位置。所以,A的值是 1,B 的值是 2,依此类推,Z 的值是 26。下面两个例子是求“ACM”和“CHINA”的 Quicksum:
ACM: 1*1 + 2*3 + 3*13 = 46
CHINA: 1*3 + 2*8 + 3*9 + 4*14 + 5*1 = 107

Input

输入数据包含一个或多个数据包。每个数据包占一行,不能以空格开始或结束,包含 1~255 个字符。

Output

对于每个数据包,在每一行上输出计算它的 Quicksum的数学表达式。

Sample Input

A C M

Sample Output

A C M:1*1+2*0+3*3+4*0+5*13=75我的代码#include <iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
int main()
{
    char s[]=" ABCDEFGHIJKLMNOPQRSTUVWXYZ", a[255];
    int i,j,length;
    long sum;
    loop:
       cin.getline(a,255);
        length=strlen(a);
      if(a[0]==' '||a[length-1]==' ') return 0;
       cout<<a<<':';
        for(sum=0,i=0;i<=length;i++)
        {
            for(j=0;j<=26;j++)
             {
                if(a[i]==s[j])
                 {    cout<<i+1<<'*'<<j;
                      sum+=(i+1)*j; break;  }
             }
        if(i<length-1) cout<<'+';
        }
        cout<<'='<<sum<<endl;        goto loop;

 

默认分类 | 阅读 1185 次
文章评论,共0条
游客请输入验证码