C로 짠 1부터 100까지의 곱

리스 2006. 8. 30. 18:02 Posted by 한준_희아빠

#include <stdio.h>
#include <math.h>

void main()
{
int iArraySize = 1000;
int iMatrix[1000];
int i = 1;
int j;
// 100번째에 1을 입력하여 곱셈할시에 0으로 되는것을 제외한다.
iMatrix[0] = 1;

for( i = 1; i < iArraySize ; i++)
iMatrix[i] = 0;

for( i = 1; i <= 100 ; i++)
{
for(j = 0 ; j < iArraySize ; j++)
{
iMatrix[j] = iMatrix[j] * i;
}

for(j = 0 ; j < iArraySize ; j++)
{
iMatrix[j+1] = iMatrix[j+1] + (int)floor(iMatrix[j] / 10);
iMatrix[j] = iMatrix[j] % 10;
}
}

int bln = 0;

for(j = iArraySize - 1 ; j > 0 ; j--)
{
if(iMatrix[j] > 0 || bln)
{
printf("%d", iMatrix[j]);
bln = 1;
}
}

1~100까지의 곱을 담을수 있는 자릿수가 존재하지 않기 때문에,

int배열에 한자릿수를 담아서 처리합니다.

배열의 루프를 돌리면서, 각각의 배열에 1 ~ 100 까지 곱할려고 하는 값을 각각 곱한후에

배열의 루프를 돌리면서, 단단위 부터 10으로 나누어 지는 몫은 배열의 다음 자리에 더한후,

10으로 나눈 나머지만을 해당 배열에 둡니다.

이렇게 루프를 돌리면, 배열안에 각각 한자리만을 저장하면서, 배열을 한자리씩 출력을 하면 1~ 100 까지의 곱을 계산할수 있습니다.

결과는 제가 50자리 정도는 체크를 하였는데, 그 이후의 숫자는 확인을 하지 못했습니다.

'리스' 카테고리의 다른 글

TXT문서에서 특정 TEXT찾기  (0) 2007.03.02
JavaScript에서 '' 인식 안되는 문제 처리방법  (0) 2006.11.10
테이블에서 글자수 제어하기  (0) 2006.07.19
선적 조건  (0) 2006.06.16
특별소비세법  (0) 2006.06.01