1.1.1Your Ride Is Here 你的飞碟在这儿!

1.1.1Your Ride Is Here 你的飞碟在这儿!

时间: 1ms        内存:64M

描述:

一个众所周知的事实,在每一慧星后面是一个不明飞行物UFO。 这些不明飞行物时常来收集来自在地球上忠诚的支持者。 不幸地,他们的空间在每次旅行只能带上一群支持者。 他们要做的是用一种聪明的方案让每一个团体人被慧星带走。他们为每个慧星起了一个名字,通过这些名字来决定一个团体是不是特定的慧星带走。 那个相配方案的细节在下面被给出; 你的工作要写一个程序来通过团体的名字和彗星的名字来决定一个组是否应该与在那一颗慧星后面的不明飞行物搭配。 团体的名字和慧星的名字都以下列各项方式转换成一个数字: 这个最后的数字代表名字中所有字母的信息,"A" 是 1 和 "Z" 是 26。 举例来说,团体 "USACO" 会是 21*19*1*3*15=17955 。 如果团体的数字除以47的余数等于慧星的数字除以47的余数,那么你要告诉这个团体需要准备好被带走 ! 写一个程序读入慧星的名字和团体的名字,如果能搭配打印"GO"否则打印"STAY" 团体的名字和慧星的名字将会是有没有空格或标点的一串大写字母(不超过6个字母)。

输入:

第 1 行: 彗星的名字(一个长度为1到6的字符串) 

第 2 行: 团体的名字( 一个长度为1到6的字符串)

输出:

单独一行包含"STAY"或"GO"。

示例输入:

COMETQ
HVNGAT

示例输出:

GO

提示:

参考答案(内存最优[748]):

#include <stdio.h>

inline int mul(char *str)
{
    char *p = str;
    int num = 1;

    while (*p)  num *= (*p++ - 64);

    return num;
}

int main(int argc, const char *argv[])
{
    char ufo[7], team[7];
    int num1, num2;

    scanf("%s\n%s", ufo, team);

    if ((mul(ufo) % 47) == (mul(team) % 47))
        printf("GO\n");
    else
        printf("STAY\n");

    return 0;
}

参考答案(时间最优[0]):

#include <iostream>

using namespace std;
int ston(string s)
{
    char *p = & s[0];
    int k = 1;
    int l = s.length();
    for(int i =0; i<l; i++)
    {
        k *= *p - 64;
        p++;
    }
    return k;
}
int main()
{
    string s1,s2;
   // cout<<(int)'A';//65
    while(cin>>s1>>s2)
    {
        int n1= ston(s1) % 47, n2= ston(s2) % 47;
        if(n1 == n2)
            cout<<"GO"<<endl;
        else
            cout<<"STAY"<<endl;


    }
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注