MIPI_AdvancedC_FRTK/Lect5/55.c

24 lines
565 B
C
Raw Normal View History

2024-11-14 08:45:50 +03:00
#include <stdio.h>
#include <inttypes.h>
uint64_t getHash(char const *s) {
const int p = 31;
uint64_t hash = 0, p_pow = 1;
while(*s) {
/* отнимаем 'a' от кода буквы и единицу прибавляем, чтобы у строки вида 'aaaaa' хэш был ненулевой */
hash += (*s++ - 'a' + 1) * p_pow;
p_pow *= p;
}
return hash;
}
int main(void)
{
char s[100] = {0};
//~ Hello.
//~ hash = 18446744072292316036
scanf("%s",s);
printf("hash = %llu\n", getHash(s));
return 0;
}