백준 1676번 팩토리얼 0의 개수
#include <stdio.h>
int main()
{
int i,N, count;
scanf("%d", &N);
count = 0;
for (i = 1; i <= N; i++)
{
while (i % 5 == 0)
{
i /= 5; //i가 5일 때 i/=5를 하므로 i가 1이 되고 이게 반복문으로 들어가 i가 1 ~ 5를 계속 반복
count++;
}
}
printf("%d", count);
return 0;
}
반복문에 사용하는 i의 값을 변화시켜 반복문에서 무한루프가 일어난다.
이런 경우 i의 값을 받아쓸 다른 변수가 필요하다.
올바른 코드
#include <stdio.h>
int main()
{
int x, i, N, count;
scanf("%d", &N);
count = 0;
for (i = 1; i <= N; i++)
{
x = i;
while (x % 5 == 0)
{
x /= 5;
count++;
}
}
printf("%d", count);
return 0;
}