這是資料結構與演算法的作業,要求實現乙個能做任意的大數乘法的程式
當時完全不懂分治法和fft,後來還是聽乙個學長說,可以快速大數乘法(汗)
一併寫到筆記裡吧
#include
#include
#include
typedef struct data
data;
typedef struct big
big;
big add(big *a0, big *b0)
else
m = a0->head.next;//a
0 n = b0->head.next;//b
0int mark = 0;
for (int i=1;i<=result.length;i++)
if (n == null)
if (m != null&&n != null)
//判斷是否要進製
if (mark)
if (p->a > 9)
else
p->next = null;
if (m != null)
if (n != null)
k->next= p;
k = p;
//p->next
}if (mark)
return result;
}big single_ride(data *a1, big *b1)
if (p1->a>9)
else
b2 = b2->next;
r->next = p1;
p1->next = null;
r = p1;
////p1->next = result.head.next;
= p1;
}if (mark)
return result;
}void input(big *a1, char *b1)
}big ride(big *a0, big *b0)
else
short1 = shor->head.next;
for (int i = 0; i < l; i++)
mid1 = &mid_result;
re1 = &result;
result = add(re1, mid1);
}return result;
}int output(big *a,char *b1)
printf("%d", p->a);
b1[i] = char(p->a + '0');
m--;
}b1[i] = '\0';
printf("\n");
return0;}
int main()
藍橋杯 大數分塊乘法 模擬乘法
對於32位字長的機器,大約超過20億,用int型別就無法表示了,我們可以選擇int64型別,但無論怎樣擴充套件,固定的整數型別總是有表達的極限!如果對超級大整數進行精確運算呢?乙個簡單的辦法是 僅僅使用現有型別,但是把大整數的運算化解為若干小整數的運算,即所謂 分塊法 如圖 1.jpg 表示了分塊乘...
C 模擬大數乘法 以及 大數階乘
大數階乘 最最最重要的總結部分 寫在開頭 大數的運算一直以來都是乙個具有研究性的問題,自己動手模擬了一下筆算乘法,以及由乘法拓展出來的階乘,和大家分享一下思路及 比如50的階乘結果是65位,而 int 的範圍是 10 9,long long 的範圍是 10 18 模擬筆算乘法,如圖 由於我們對筆算乘...
大數相乘 模擬乘法的運算規則
define crt secure no warnings include include intmain num2 255 int product 255 temp 255 temp用於存放乘法的中間值。比如計算123 3時,temp依次為369,246,123.intlength1,length...