선생님, 28번 문제를
251
작성한 질문수 72
'일의 자리부터 연속적으로' 가 아니라
N!값을 구하였을 때, 일의자리부터 10의 자리는 모두 00이지만 중간에 000이나 0000이 나오게 되는 경우로 문제를 변형하였을 경우에는 어떻게 푸는게 제일 효율적일지 궁금합니다.
1) N!값을 구한 뒤 그 값을 char로 형변환 한 다음 하나씩 탐색해나가면서 연속된 0의 개수를 구하는 방법
현재로서는 이 방법 밖에 떠오르지 않는데.... 혹시 별 다른 방법이 있을까요? 궁금합니다 .
답변 1
1
그렇게 문제를 바꾸면 엄청 어려운 문제가 되고 코드구현도 굉장히 복잡해집니다.
일단 N제한이 1000이기 때문에 N!값이 너무 커서 정수형 변수에 들어가지 않습니다. 그래서 N!값을 계산하는 것 자체가 힘듭니다. 만약 정수형 변수에 계산이 됬다면 계산된 값을 10으로 나눈 몫으로 계속 바꿔가면서 그 몫을 10으로 나눈 나머지가 0인지 확인하는 것이 좋을 것 같습니다.
#include<stdio.h>
int main() {
long long N=8070008700210;
while(N>0){
int t=N%10;
printf("%d\n", t);
N=N/10;
}
return 0;
}
N!을 계산할 때는 일반적인 연산 코드를 쓰는 것이 아니라 알고리즘에 큰수 곱셈이라는 알고리즘이 있습니다. 이 방법을 써서 N!값을 구해야 하는데 많이 복잡합니다. 단순 두 개의 큰수를 곱하는 것도 아니구 N!을 큰 수 곱셈으로 구현하는 것은 엄청 복잡할 것 같습니다. 나중에 실력자가 되시면 도전해보시기 바랍니다.
테스트 케이스 질문
0
373
1
병합정렬 시간복잡도 질문
0
462
1
41.연속된 자연수의 합 문제풀이에서 수학적인 원리를 모르고 있습니다.
0
1345
2
질문드립니다.
0
376
1
질문드립니다!
0
430
1
dev 프로그램 질문
0
275
1
문제가 이해가 안되요
0
376
1
4번 나이차이 문제 접근법 질문 드립니다.
0
307
1
source file not compiled
0
1047
3
59번 질문드립니다.
0
372
1
25번 문제 질문
0
349
1
4. 나이차이 문제 질문입니다.
0
372
1
90번 라이언 킹 심바 1번 테스트 케이스
0
470
1
71번 문제 전역 변수 질문 있습니다
0
365
1
75번, 79번 priority_queue관련
1
356
1
75.최대 수입 스케줄
0
400
2
복면산 정답의 수
0
432
1
테스트 케이스에 대해서
0
445
1
수업 내용 질문입니다!
1
232
1
풀어보면 좋은 문제 목록 - 2580 스토쿠 DFS 질문입니다!!
0
822
2
12. 플로이드-와샬(그래프 최단거리) . 27:25초
0
255
1
다른 풀이 방식
0
317
1
크루스칼 vs 프림
0
306
1
숫자 총개수 small 질문있습니다.
0
243
1





