2021年ACM竞赛班训练 E题 调皮的摩尔

Posted lhqwd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021年ACM竞赛班训练 E题 调皮的摩尔相关的知识,希望对你有一定的参考价值。

E题 调皮的摩尔

原题链接

算法: 字符串哈希

将一个字符串转化为整数存储,同时保证字符串不同,产生的数字不同。

注意点:

1. unsigned long long

unsigned long long (\\(2^{64} - 1\\)), 溢出自动取模

2. 哈希值的计算方法

已知字符串\\(S\\), 根据\\(hash[r]\\)\\(hash[l]\\) 计算子串\\(l-r\\)的哈希值:
\\(hash[l - r] = hash[r] - hash[l] * p^{r -l + 1}\\)

代码

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    unsigned long long ans = 0;

    string s;
    cin >> s;
    unsigned long long base = 1;
    for (int i = s.size() - 1; i >= 0; i -- ){
        if (s[i] >= \'a\' && s[i] <= \'z\')
            ans = ans + base * (unsigned long long)(s[i] - \'a\');
        else{
            ans = ans + base * (unsigned long long)(s[i] - \'A\');
        }
        base = base * 26;
    }

    cout << ans << endl;

    return 0;
}

以上是关于2021年ACM竞赛班训练 E题 调皮的摩尔的主要内容,如果未能解决你的问题,请参考以下文章

2021年ACM竞赛班训练(十一)

集合划分讲解-And-2021年ACM竞赛班训练2021.5.20-问题 E: 登上火星-题解

高精度加法讲解-And-2021年ACM竞赛班训练2021.5.13-问题 E: Python大法好-题解

buctoj2021年ACM竞赛班训练题解

2021年ACM竞赛班训练2021.5.21-问题 A: 尝试看到这道题吧-题解

高精度加法讲解-And-2021年ACM竞赛班训练2021.5.13-问题 F: 最遥远的距离-题解