Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Archives
Today
Total
관리 메뉴

yyangman의 개발일지

C 알고리즘 개념 : N!에서 0의 개수 본문

알고리즘

C 알고리즘 개념 : N!에서 0의 개수

yyangman 2023. 1. 26. 10:31

 

자연수 N이 입력되면 N! 값에서 연속적으로 있는 0의 최대 개수를 구하는 프로그램을 작성해보자

 

만약 5!이면 5! = 120이므로 1이다. 만약 12! = 479001600 이므로 2가 된다

 

 

순서도는 아래와 같다

 

 

알고리즘 과정

1.N!을 일의 자리부터 a 배열에 넣어준다

2.배열을 다 넣으면 0항부터 배열의 값이 0인지 조건문을 만든다

3.배열의 값이 0이면 tmp 를 증가시킨다

4.연속된 횟수가 제일 큰 수인지 조건문을 만든다

 

소스코드는 아래와 같다

 

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int main(){
	int n,i,j,tmp=0,a[101],res=0,sum=0,c;
	scanf("%d",&n);
	for (i=1;i<=n;i++){
		sum=sum*i;
	}
	printf("%d\n",sum);
	for (i=0;sum!=0;i++){
		res=sum % 10;
		sum = sum/10;
		a[i]=res;
	}

	int max=0;
	for (j=0;j<=i;j++){
		if (a[j] == 0){
		tmp++;
	} else {
	if (tmp > max){
		max=tmp;
	}
		tmp=0;
	}
	}
	printf("\n");
	printf("%d",max);
	return 0;
}