아무거나 내꺼 공부할래
N!에서 0의 개수 / c / 제한시간 없음 본문
▣ 문제
- 자연수 N이 입력되면 N! 값에서 일의 자리부터 연속적으로 ‘0’이 몇 개 있는지 구하는 프로그 램을 작성하세요. 만약 5! = 5 ×4 × 3 × 2 ×1 = 120으로 일의자리부터 연속적된 ‘0’의 개수는 1입니다. 만약 12! = 479001600으로 일의자리부터 연속적된 ‘0’의 개수는 2입니다.
▣ 입력설명
- 첫 줄에 자연수 N(10<=N<=1,000)이 입력된다.
▣ 출력설명
- 일의 자리부터 연속된 0의 개수를 출력합니다.
▣ 입력 예시
12 |
▣ 출력 예시
2 |
<내 코드>
#pragma warning(disable:4996)
#include<stdio.h>
int main() {
int n;
int cnt = 0;
int num = 1;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
num = num * i;
}
while (num % 10 == 0) {
cnt++;
num = num / 10;
}
printf("%d\n", cnt);
return 0;
}
<수정한 코드>
#pragma warning(disable:4996)
#include<stdio.h>
int main() {
int n, i, j, tmp, cnt1 = 0, cnt2 = 0;
scanf("%d", &n);
for (i = 2; i <= n; i++) {
tmp = i;
j = 2;
while (1) {
if (tmp % j == 0) {
if (j == 2) cnt1++;
else if (j == 5) cnt2++;
tmp = tmp / j;
}
else j++;
if (tmp == 1) break;
}
}
if (cnt1 < cnt2) printf("%d\n", cnt1);
else printf("%d\n", cnt2);
return 0;
}
소인수들 중에서 2와 5의 개수 중에서 더 적은 숫자를 출력하는 코드
.
'[c언어&c++] 알고리즘 공부 > 인프런(Inflearn)' 카테고리의 다른 글
탄화수소 질량 / c / 제한시간 없음 (0) | 2021.01.22 |
---|---|
3의 개수는?(Google 인터뷰) / c / 제한시간 없음 (0) | 2021.01.20 |
Jolly Jumpers / c / 제한시간 없음 (0) | 2021.01.18 |
온도의 최대값 (1차원 배열 구간합) / c / 제한시간 : 1초 (0) | 2021.01.17 |
분노유발자 / c / 제한시간 없음 (0) | 2021.01.17 |