ضرب 2 عدد بزرگ در هم - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

ضرب 2 عدد بزرگ در هم

0 امتیاز
سلام چجوری میشه توی c++ 2 تا عدد خیلی بزرگ مثلا 100 رفمی رو در هم ضرب کرد ؟
سوال شده دی 7, 1392  بوسیله ی GENOM (امتیاز 34)   2 5 8
دوباره تگ گذاری شد فروردین 3, 1393 بوسیله ی BlueBlade

1 پاسخ

+2 امتیاز
 
بهترین پاسخ

سلام.

با عملیات بیتی (که هم حجم کمتری از حافظه لازمه و هم سرعت بیشتری داره) و یا استفاده از آرایه برای هر رقم (اگر با عملیات بیتی آشنایی لازم نداشته باشید استفاده از آرایه احتمالا کد نویسیش آسون تر باشه).

این نمونه یک فایل هدر هست که با استفاده از عملیات بیتی بر روی بلاک هایی از حافظه با سایز دلخواه، عملیات جمع و تفریق و ضرب و تقسیم رو برای اعداد صحیح انجام میده:

http://barnamenevis.org/showthread.php?150444-%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%D9%86%D9%88%D8%B4%D8%AA%D9%87-%D8%B4%D8%AF%D9%87-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-C-%D9%88-C&p=1649855&viewfull=1#post1649855

و یک نمونه ی کوچیک:

#include "iostream"
using namespace std;

#include "IntX.h"

int _tmain(int argc, _TCHAR* argv[])
{
    INTX2048 i_a;
    INTX2048 i_b;
    INTX2048 i_c;
    size_t sizeof_int = sizeof(i_a);
    char str_a[620];
    char str_b[620];
    char str_c[620];
    //--------------------------------------------------------------------------
    while (true)
    {
        cin >> str_a;
        cin >> str_b;
        IntX_FromStrA(&i_a, sizeof_int, str_a);
        IntX_FromStrA(&i_b, sizeof_int, str_b);
        IntX_Mul(
            &i_c,
            &i_a,
            &i_b, sizeof_int);
        IntX_ToStrA(str_c, &i_c, sizeof_int);
        cout << str_c << endl << "-----------------" << endl;
    };
    return 0;
};

 

پاسخ داده شده دی 7, 1392 بوسیله ی محمد قدیانی (امتیاز 317)   1 9
انتخاب شد دی 21, 1392 بوسیله ی BlueBlade
...