标签:ret http sig 自动 acm 竞赛 tar csdn https
将一个字符串转化为整数存储,同时保证字符串不同,产生的数字不同。
unsigned long long (\(2^{64} - 1\)), 溢出自动取模
已知字符串\(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;
}
标签:ret http sig 自动 acm 竞赛 tar csdn https
原文地址:https://www.cnblogs.com/lhqwd/p/14852930.html