您的位置:首页 > 其它

USACO section 1.1.1 Your Ride Is Here

2014-08-09 22:57 295 查看
Your Ride Is Here~~~

题目大意: 计算两个字符串对应的编码 mod 47 后,是不是相等的问题

其中 'A' = 1, 'Z' = 26

解决方案: 怎么样才能将 ‘A’的编码变成1呢?

我们知道,字符‘A’对应的ASCII码为65,字符‘B’为66

。。。字符‘Z’为90,

故通过简单的数学运算就可以将看似复杂的运算简化:

ch - ‘A’+ 1

代码:
# include<iostream>
# include<cstdio>
# include<cstring>
# include<cmath>
# include<algorithm>

using namespace std;

char s1[6+8];
char s2[6+8];

int main(void)
{
    memset(s1,0,sizeof(s1));
    memset(s2,0,sizeof(s2));
    scanf("%s",s1);
    scanf("\n%s",s2);
    int n1 = strlen(s1);
    int n2 = strlen(s2);
    int m1 = 1;
    int m2 = 1;

    for ( int i = 0;i < n1;i++ )
    {//'A'的字符编码为65
        m1 = m1 * ( s1[i] - 64 );
    }

    for ( int j = 0;j < n2;j++ )
    {
        m2 = m2 * ( s2[j] - 64 );
    }

    if ( m1%47 == m2%47 )
        printf("GO\n");
    else
        printf("STAY\n");

    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: