반응형
#include <iostream>
#include <string>
#include<cmath>
using namespace std;
string t;
double hasf(string name) {
double sum = 0;
double temp;
double len = name.length();
for (int i = 0; i < len;i++) {
temp = pow(26, len - i - 1);
double abc = name[i];
temp = abc * temp;
sum += temp;
}
return sum;
}
int main() {
cin >> t;
// JASON
double sum = hasf(t);
printf("%.0lf", sum);
}
입력 예제
JASON
출력 결과
35016904
1해시함수
우선 pow()함수는 (밑, 지수)로 제곱을 구해주는 함수다.
pow()를 쓰려면 c언어에서는 math.h header를, c++언어에서는 cmath header를 선언해야 한다.
그리고 대부분의 값은 int가 아니라 float랑 double로 구해지므로 double로 자료형을 맞춘다.
자릿수마다 26의 자릿수 제곱을 구하고
J의 아스키 코드를 제곱한 값에 곱한 후
그 값을 sum에 더하는 것을 반복한다.
반응형
'C언어 > 문제풀다 하나씩' 카테고리의 다른 글
phrasing 문자열 안에 특정 문자 찾기 (0) | 2020.06.26 |
---|---|
counting sort 문제 풀어보기 (0) | 2020.06.26 |
기본 해쉬함수 사용하기 B-> 10 (0) | 2020.06.26 |
head[100]과 myalloc()해보기 (0) | 2020.06.26 |
해쉬함수 쓰기! 나이 입력하고 이름 출력 (0) | 2020.06.23 |
링크드리스트 int 넣기 myalloc함수 만들어서 넣기 (0) | 2020.06.23 |
링크드리스트 건너건너 출력하기 (0) | 2020.06.23 |
메모리 풀로 링크드리스트 만들기 (3) | 2020.06.23 |