´Ù¹èÀå Á¤¼öÀÇ °¡»ê


ÇÔ¼ö¸í
mpAdd  ´Ù¹èÀå Á¤¼ö³¢¸®ÀÇ °¡»ê
Çü½Ä
void mpAdd(int *ret, int *a, int *b);
Àμö
ret   (Ãâ·Â) ´Ù¹èÀå Á¤¼ö³¢¸®ÀÇ °¡»êÀÇ °á°ú(a + b)
a, b  (ÀÔ·Â) ´Ù¹èÀå Á¤¼ö
ÇÔ¼öÄ¡
¾øÀ½
ÁÖÀÇ »çÇ×
¹è¿­ÀÇ °¢ ¿ä¼Ò ai(i ´Â 1 ÀÌ»ó)´Â 1¾î¸¦ ³ªÅ¸³», 1¾î·Î ³ªÅ¸³¾ ¼ö ÀÖ´Â ÃÖ´ëÀÇ Á¤¼ö´Â 9999 ·Î ÇÑ´Ù. ¸»ÀÇ ±æÀÌ´Â a0 ÀÇ °ªÀ¸·Î ³ªÅ¸³½´Ù. Áï, ´Ù¹èÀå Á¤¼ö´Â
anKn-1+ an-1Kn-2+...+a2K+ a1
±×¸®°í Ç¥ÇöÇÑ´Ù. ´Ù¸¸, K=10000, n=a0.

¿ë·Ê(mpAdd-test.c )

ÇÁ·Î±×·¥(mpAdd.c )
#define N 10000

void mpAdd(int *ret, int *a, int *b)
{
    int  i;
    int  lr, la, lb;
    int  *rr;
    int  x;

    la = *a;
    lb = *b;
    lr = (la >= lb) ?  la : lb;

    rr = ret;
    x = 0;
    for (i = 1; i <= lr; i++) {
        if (i <= la) x += *++a;
        if (i <= lb) x += *++b;
        if (x < N) {
            *++rr = x;
            x = 0;
        } else {
            *++rr = x - N;
            x = 1;
        }
    }
    *++rr = x;
    *ret = lr + x;
}
¼³¸í
10 Áø¼öÀÇ °è»ê°ú °°ÀÌ, ÇϾ´Ù ´õÇØ °£´Ù. È­°¡ 10000 (À»)¸¦ ³ÑÀ¸¸é(ÀÚ) ÀÚ¸®¼ö ¿À¸§ÀÌ ¹ß»ýÇØ, À§ÀÇ ¸»¿¡ 1À» ¿©ºÐÀ¸·Î ´õÇÑ´Ù.

°ü·Ã ÇÔ¼ö
´Ù¹èÀå Á¤¼öÀÇ °¨»ê, ´Ù¹èÀå Á¤¼öÀÇ °ö¼À, ´Ù¹èÀå Á¤¼öÀÇ Á¦»ê, ´Ù¹èÀå Á¤¼öÀÇ Æò¹æ±Ù, ´Ù¹èÀå Á¤¼öÀÇ ´ë¼Ò ºñ±³, ¼ö¿­À» ´Ù¹èÀå Á¤¼ö·Î º¯È¯ÇÏ´Â, ´Ù¹èÀå Á¤¼ö¸¦ ¼ö¿­·Î º¯È¯ÇÏ´Â, long Á¤¼ö¸¦ ´Ù¹èÀå Á¤¼ö·Î º¯È¯ÇÏ´Â, ´Ù¹èÀå Á¤¼ö¸¦ long Á¤¼ö·Î º¯È¯ÇÑ´Ù