现在的位置: 首页 > 综合 > 正文

USACO section 1.1.1 Your Ride Is Here

2018年04月29日 ⁄ 综合 ⁄ 共 607字 ⁄ 字号 评论关闭

  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;
}

抱歉!评论已关闭.