문제 : https://www.acmicpc.net/problem/1676
[처음 작성한 코드... 시간초과...]
#include <stdio.h>
int main(void){
int n, i;
int fac = 1;
int count = 0;
scanf("%d", &n);
for(i = 1; i <= n; ++i){
fac *= i;
}
while(fac % 5 == 0){
count++;
fac /= 5;
}
printf("%d", count);
}
코드:
#include <stdio.h>
int main(void) {
int n, i;
int count = 0; // 5로 나누어 떨어지는 수의 개수를 저장하는 변수
// 사용자로부터 정수를 입력받음
scanf("%d", &n);
// 5의 배수들이 등장하는 횟수를 계산하는 루프
// i는 5의 배수를 의미하며, i를 5씩 곱해가면서 5의 배수들을 확인함
// 예를 들어, n이 100이라면, 5, 10, 15, 20, ..., 100까지의 5의 배수들을 확인
// 각각의 5의 배수는 5로 나누었을 때 몫이 등장하는 횟수를 의미함
// 5의 제곱수(25, 50, 75, 등)의 경우, 각 배수에 대해 한 번 더 5로 나누어야 함
// 이를 통해 등장하는 5의 배수들의 개수를 세고, count 변수에 더해줌
for (i = 5; i <= n; i *= 5) {
count += n / i;
}
// 결과 출력
printf("%d", count);
return 0;
}
'Study > Programming' 카테고리의 다른 글
BOJ 10952번 : A + B - 5 / C언어 (0) | 2024.03.29 |
---|---|
Tistory 꾸미기 - 벚꽃 / Web (0) | 2024.03.29 |
BOJ 2438번 : 별 찍기 - 1 / C언어 (0) | 2024.03.28 |
BOJ 2557번 : Hello World / C언어 (0) | 2024.03.28 |
BOJ 2754번 : 학점계산 / Python (0) | 2024.03.28 |