1樓:匿名使用者
給你乙個吧
速度還可以
自己讀下**
/**************************************
演算法複雜度為:o(longhta*longthb)longtha為乘數的位數
longhtb為被乘數的位數
***************************************/
#include
#include
#include
#define len 1000
void mult(char ,char ,char );
main()
void reverse(char a)
}longth=i+j-1;
if(jw>0)
ans[longth++]=jw+'0';
ans[longth]='\0';
reverse(ans);}
2樓:匿名使用者
在長度不很大的情況下,ftt不能體現優勢,其實只要減少乘法除法應該可以得到相當好的演算法。不過大部情況下這些做法都比較複雜,其實簡單的查表可能更好。
做乙個0-9的乘法表結果m,每次計算時只要c[i +j] = m[ia[i]][ib[j]];就好。
進製也可以同理,0-99的進製表和餘數表就可以解決除法和模的問題,不過這不是關鍵。
3樓:匿名使用者
大數乘的最快演算法是快速傅利葉變換法,這有乙個,但不是我本人寫的。
#include
#include
#include
#include
using namespace std;
const double pi = acos(-1);
typedef complexcp;
typedef long long int64;
const int n = 1 << 16;
int64 a[n], b[n], c[n << 1];
void bit_reverse_copy(cp a, int n, cp b)
}void fft(cp _x, int n, bool flag)
}} memcpy(_x, x, sizeof(cp) * n);
for (nc = na + nb - 1; nc > 1 && !c[nc - 1]; --nc);
} const int len = 5, mod = 100000;
i += len;
if (i)
}void print(int64 a, int n)
char buf[n + 10];
int main()
else convert(buf, a, na);
scanf("%s", buf);
if (buf[0] == '-')
else convert(buf, b, nb);
polynomial_multiply(a, na, b, nb, c, nc);
int64 t1, t2;
t1 = 0;
for (int i = 0; i < nc; ++i)
for (; t1; t1 /= mod) c[nc++] = t1 % mod;
if (sign) putchar('-');
print(c, nc);
} return 0;}
4樓:炒飯
**的oj,怎麼沒聽過
誰知道多位數乘法的快速計算方法?
5樓:荒漠一點紅
1、 十幾乘十幾:口訣:頭乘頭,尾加尾,尾乘尾。
例:12×14=?
解: 1×1=1
2+4=6
2×4=8
12×14=168
注:個位相乘,不夠兩位數要用0佔位。
2、 頭相同,尾互補(尾相加等於10):口訣:乙個頭加1後,頭乘頭,尾乘尾。
例:23×27=?
解:2+1=3
2×3=6
3×7=21
23×27=621
注:個位相乘,不夠兩位數要用0佔位。
3、 第乙個乘數互補,另乙個乘數數字相同:口訣:乙個頭加1後,頭乘頭,尾乘尾。
例:37×44=?
解:3+1=4
4×4=16
7×4=28
37×44=1628
注:個位相乘,不夠兩位數要用0佔位。
4、 幾十一乘幾十一:口訣:頭乘頭,頭加頭,尾乘尾。
例:21×41=?
解:2×4=8
2+4=6
1×1=1
21×41=861
5、 11乘任意數:口訣:首尾不動下落,中間之和下拉。
例:11×23125=?
解:2+3=5
3+1=4
1+2=3
2+5=7
2和5分別在首尾
11×23125=254375
注:和滿十要進一。
6、 十幾乘任意數:口訣:第二乘數首位不動向下落,第一因數的個位乘以第二因數後面每一 個數字,加下一位數,再向下落。
例:13×326=?
解:13個位是3
3×3+2=11
3×2+6=12
3×6=18
13×326=4238
注:和滿十要進一。
6樓:苯寶寶不笨
兩位數乘法的快速計算方法見下表:
兩位數乘法的部分推論方法:
設兩位數分別是10a+b,10c+d,其乘積為s,根據多項式:
s= (10a+b) x (10c + d) = 10a x 10c + b x 10c + 10a x d+ bxd。
一、首數相同,尾數互補(兩個數相加等於10叫互補)
因為個位數互補,所以b+c = 10
(10a+b)(10a+c)
= 100a²+10a(b+c) +bc
= 100a²+10a x10 +bc
= 100a(a+1)+bc
速算方法:
1.首數加1乘以該首數;
2.然後連線上兩尾數的乘積。
例:25x25=|(2 + 1) x 2| | 5 x 5|= | 6| | 25 | = 625
36x34=|(3 + 1) x 3| | 6 x
4|= | 12 | | 24 | = 1224
二、首數相同,尾數不互補
(10a+b)(10a+c)
= 100a²+10a(b+c) +bc
= 10a (10a + b + c ) + bc
=( (10a+b)+ c ) x 10a + bc
速算方法一:
1.第二個乘數的個位數與第乙個乘數相累加;
2.然後乘以第二個乘數剩餘的數;
3.最後,再加上兩尾數的乘積。
例:72 *73 = (72 + 3 )x 70 + 2*3 = 5256
速算方法二:
1.計算首位數的平方,得數作為前積;
2.兩尾數的和與首位相乘,得數作為中積;
3.兩尾數相乘,得數作為後積;
應用舉例:
64 x 67
6 x 6 = 36
(4+7) x 6 = 66
4 x 7 = 28
結果為:4288(36+6=42;28+60=88)
三、首數互補,尾數相同
十位數互補,所以有a + c = 10
(10a+b)(10c+b) = 100ac + 10(ba+bc) + b²=100ac + 10b(a + c) + b²
=100ac + 10bx10 + b²
=100(ac + b) + b²
速算方法:
1.兩個首位相乘,其積再加上乙個尾數,得數作為前積;
2.兩尾數相乘,即尾數的平方,得數作為後積,沒有十位補0;
應用舉例:
36 x 76 =| 3 x 7 + 6 | | 6 x 6|= | 27 | | 36 | = 2736
32 x 72 =| 3 x 7 + 2 | | 2x 2|= | 23 | | 04 | = 2304
四、首數不互補,尾數相同
如:72x22
計算公式推導
(10a+b)(10c+b) = 100ac + 10(ba+bc) + b²=100ac + 10b(a + c) + b²
速算方法:
1.首數乘以首數,再加尾數,得數作為前積;
2.看兩個首數的和比10大多少,或者少多少;
比10大多少個,就加上幾個尾數;
比10少多少個,就減上幾個尾數;
加減的位置是:一位數十位加減;兩位數百位加減;
結果作為中積;
3.尾數相乘,作為後積;
應用舉例:
67 x 87 =| 6 x 8 + 7 | | 7 x 7| + (6+ 8 -10 )x 7 x 10= 5549 + 280
= 5829
7樓:匿名使用者
嘿嘿嘿 只要肯出錢 去買臺計算機 哈哈
8樓:匿名使用者
9樓:匿名使用者
用手指表示數
以手指為基礎。腦記十位數,手示個位數,可以減少思維和計算上的負擔,也有利於口算能力。大多數人用右手寫字,左手就用
來記數。
我們把和拇指方向相同的手指叫做該數的外指,和拇指方向相反的手指叫做該數的內指。
1.拇指屈表示1。這時1的外指是1,內指是4。
2.拇指,食指同時屈表示2。這時2的外指是2,內指是3。
……………………
5.五指全屈表示5。這時5的外指是5,內指是0。
6.拇指伸出表示6。這時6的外指是1,內指是4。
……………………
10.五指全伸表示0。這時0的外指是5,內指是0。
湊數:兩數之和等於5,它們互為湊數。如:1和4
尾數:大於5而小於10的數減去5所得的數叫該數的尾數。如:6的尾數為1
補數:兩數之和為10,100,1000……它們互為補數。如:4和6
多位數乘多位數
速演算法的多位數乘法是完全建立在一位數乘法的基礎上的
一,基本規律
1.看看積的位數:設被乘數是n位數,乘數是m位數,那麼積就是n+m位。
2.看看運算次數:任何兩個多位數相乘,乘數和被乘數的每位數都要相乘一次,不能少乘也不能多乘。由於一位數乘n位數的相乘
次數為n+1次,因此m位數乘n位數總乘數為(n+1)*m次。(含首位0)
3.看看運算順序:採用高位算起,被乘數和乘數依一定程式同時從「逐位乘」的原理出發,通過找出相乘積的「同位數」將積的每個「同
位數」分別相加,直接找出總積的每位數,邊算邊清位直接報出每位得數,達到「逐位清」。這種運算方法可以直呼得數,簡化運算
過程,快速,準確,方便。
每位數:相同數字上的數。數字:個位,十位,百位……叫數字。
如乙個乘法的傳統豎式:
32* 73
96224
2336
其中9和4就叫同位數。這個小學都有教吧。
二,計算方法
史豐收的多位數乘法,是直接找總積的每位數來進行的,而總積的每位數,就是所有各位數逐位相乘中所得到的各個「同位數」之
和。 1.結合用手指記數
2.被乘數面前寫0
3.乘數的首位與被乘數的尾位數對齊,這樣寫,利於看清楚運算程式,找相乘二數。以首尾相接為準,以前(左邊)都是乘數的
首數開頭乘,簡稱「首開頭」。以後(右邊)都是被乘數的尾數開頭乘,簡稱「尾開頭」
4.書寫積的每位數:積的首位數對準開頭的0,後面逐位對齊,最後積剛好對到乘數的最後一位,因為被乘數首位前的0多出一
位,而乘數與被乘數首尾
誰知道多肉植物怎麼可以快速長大嗎
首先,當然是盡可能將仙人球放到日照時間長的地方,而不是光線最強的地方。對植株補光,應當延長光照時間,而不是因為光線弱為增加光強補光 另外呢是應當保持盆土有足夠的濕度,尤其是附生掌類,它們需要土壤較長期地濕潤。因為他們生長在枯葉或樹枝上,為了保持自己的水分,只要根系一發現水分威脅,馬上就會關閉氣體交換...
誰知道這種長吊燈的名字,多錢,誰知道這種長吊燈的名字,乙個多錢???
這種是工程訂製燈,非標準產品,不菲。效果圖中比例也不太準確,難以看出尺寸。隨便估一下,一根彎管大約50元左右,你可以粗略算算 家裡那種大的吊燈,只是安裝要多少錢乙個?10 200到300之間的燈好看的對流行的 長沙大概是150左右!你好,各個地方有點差異,大概一天的工錢在100 200之間。誰知道這...
快速祛痘的方法,快速祛痘的方法誰知道
鷹擊世界 您好,知我藥妝肌膚顧問很高興幫助您。一 維c黃瓜緊膚 自制方法 1.黃瓜洗淨,去皮,放入攪拌機中攪拌成泥狀。2.維生素c片放入研缽中研磨成細粉。3.將維生素c粉末 橄欖油加入黃瓜泥中,攪拌均勻,調成泥狀。二 土豆泥 將200g土豆帶皮煮熟,去皮,加少量原汁搗成泥。加入牛奶 甘油混合搗勻成糊...