#include <stdio.h>
void mult(int big[], int n) { // big[0] 에는 다음에 나오는 셀의 갯수가 있다. 만진법이다.
int i;
for(i=1;i<=big[0];i+=1) {
big[i]=n*big[i];
}
for(i=1;i<=big[0];i+=1) {
big[i+1]=big[i+1]+big[i]/10000;
big[i]=big[i]%10000;
}
if(big[i]) big[0]=i;
//printf("%d %d %d %d\n",big[0],big[1],big[2],big[3]);
}
int main() {
int i, n;
int fac[10001]={1, 1, 0,}; // 10000셀의 정수 십진수 40000 자리까지 나타낸다.
// 10000 팩토리얼 까지 구할수 있다.
printf("number: ");
scanf("%d", &n);
for(i=1;i<=n;i+=1) mult(fac, i);
printf("%4d ",fac[fac[0]]);
for(i=fac[0]-1; i>0; i-=1) printf("%04d ",fac[i]);
printf(" ##%d", fac[0]);
return 0;
}
=====================================================================
연숙해서 팩토리얼 출력하기
#include <stdio.h>
void mult(int big[], int n) { // big[0] 에는 다음에 나오는 셀의 갯수가 있다. 만진법이다.
int i;
for(i=1;i<=big[0];i+=1) {
big[i]=n*big[i];
}
for(i=1;i<=big[0];i+=1) {
big[i+1]=big[i+1]+big[i]/10000;
big[i]=big[i]%10000;
}
if(big[i]) big[0]=i;
//printf("%d %d %d %d\n",big[0],big[1],big[2],big[3]);
}
int main() {
int i, j, n;
int fac[10001]={1, 1, 0,}; // 10000셀의 정수 십진수 40000 자리까지 나타낸다.
// 10000 팩토리얼 까지 구할수 있다.
printf("number: ");
scanf("%d", &n);
for(i=1;i<=n;i+=1) {
mult(fac, i);
printf("%3d! = %d",i,fac[fac[0]]);
for(j=fac[0]-1; j>0; j-=1) printf("%04d",fac[j]);
printf("\n");
}
return 0;
}
'c·c++ > c 프로그래밍' 카테고리의 다른 글
하노이탑 이해하기 (0) | 2012.03.24 |
---|---|
동적할당 행렬의 곱셈 (0) | 2012.03.24 |
bit field로 2진수 출력하기 (0) | 2012.03.22 |
순환호출과 반복문 (0) | 2012.03.22 |
파일을 메모리에 모두 읽어들이자. (0) | 2012.03.22 |