50점만 엄청 받다가 문제점을 찾고 드디어 100점을 맞았다 ㅜㅜㅠ!!
오버 플로우때문에 자꾸 50점을 받았던 것이다 !!!!
int를 long long으로 바꾸었다.
- 맞춘 코드
#include<stdio.h>
#define M 1234567891
long long func(int, char[]);
int main() {
char arr[51];
int T = 0;
scanf("%d", &T);
scanf("%s", &arr);
long long a = 0;
a = func(T, arr);
printf("%lld", a);
return 0;
}
long long func(int T, char arr[]) {
long long result = 0;
long long a = 1;
for (int i = 0; i < T; i++) {
for (int j = 0; j < i; j++) {
a *= 31;
a %= M;
}
result += (((arr[i] - 'a') + 1)%M) * a;
result %= M;
a = 1;
}
return result;
}
아 그리고 제곱함수인 pow()를 사용했다가 그냥 내가 제곱코드를 작성했다 ㅎㅎㅎ
'[프로그래밍 언어] > [C]' 카테고리의 다른 글
[ 정렬 / C언어 ] qsort 퀵 정렬. (0) | 2023.02.01 |
---|---|
[ 백준 / C언어 ] 2798 블랙잭. (0) | 2023.01.13 |
[ 백준 / C언어 ] 10250 ACM 호텔. (0) | 2023.01.13 |
[ 백준 / C언어 ] 10809 알파벳 찾기. (0) | 2023.01.12 |
[ 백준 / C언어 ] 2475 검증수. (0) | 2023.01.12 |