원래 머리가 좋진 않아서 그냥 연필이랑 계산기로 for문 몇번 반복해가면서

대충 감 잡고 코딩하는데요.
팩토리얼 이건 도대체 답이 안나오네요.

이부분 입니당. (소스는 블로그 어디선가 퍼왔는데 기억이 안나네요 ㅠㅠ...짤방은 해당 소스 출력시에 궁금한부분.)

---------------------------


 for (k=1;k<=nn;k++){
  int j;
  j++;
 
   lmul(s,k,s);
  printf("\n");
  printf("for문이 %d회 끝났음\n\n",j);

printresult(s);
    }





void lmul(short a[],short b,short c[])   
{
  short i;
 short d,cy=0;

 

    for (i=L2-1;i>=0;i--){
        d=a[i];
        c[i]=(d*b+cy)%10000;
        cy=(d*b+cy)/10000;

  printf("c[%d]=%-2d*%-2d+%-2d = %2d\n",i,d,b,cy,(d*b+cy)%10000);
  printf("d의값=%-2d b의값=%-2d    cy의값=%-2d \n",d,b,cy);

    }
}


void printresult(short c[])      {
    short i;
    for (i=0;i<L2;i++)
        printf("%04d",c[i]);
    printf("\n");
}




-----------------------------------------------

대충 어떤 식으로 저장/출력 되는진 여기저기  printf로 하나하나 찍어가면서 해보는뎅..

        d=a[i];
        c[i]=(d*b+cy)%10000;
        cy=(d*b+cy)/10000;

이부분을 알수가 없네요..아으...특히 8! 이상 넘어가면 수식상으로 324가 나오는데
 
(첫번째 마지막 배열에)0320 저장 + (마지막 배열-1)0004 저장이 어떻게 되는질 모르겠어여..

올라가는 타이밍을 알고 싶은데...(수치해석 할때 머신 앱실론 찾을때 나오는것 처럼..)

그냥 저장시킨 배열 출력시켜봐도 걍 어느순간 지 멋대로 점프되어서 출력 결과만 나와버리네요.(짤방)

cy가 4가 됬을때 c[14]에 저장되는 타이밍을 출력을 몬하겠슴여 ㅠㅠㅠㅠㅠ아놔.....

지까이께 저장이 됬으니까 출력할때 튀어나올텐데...-_-;;;


하나하나 연필 굴려가면서 해봤는데 %연산이랑 /10000 땜에 이건 도저히..-.-;;;반복문이 너무 많아서 좀 무리가 있는듯..;;;; 

힌트 좀 주실분 안계신가여...조공짤도 올렸슴메 ㅜㅜ..