埃及乘法
乘法可以看成n個(gè)a相加,那么所需要的時(shí)間為O(n),那么如何降低乘法的時(shí)間呢(降低為logn)?
埃及乘法算法就是一種,分為奇數(shù)和偶數(shù),(例如計(jì)算n*a)偶數(shù)從1開始是a,然后1?2,a+a以此類推,奇數(shù)的時(shí)候是從1開始先加上一個(gè)a以后跟偶數(shù)是一樣的。
似乎先把兩個(gè)乘數(shù)按大小排出來然后小的數(shù)在前面會(huì)更快
我的代碼(遞歸格式借鑒)
#include <bits/stdc++.h> using namespace std; int r; int mu(int n,int a) {if(n==1)return r+a;if(n%2)r+=a;return mu(n>>1,a+a); } main() {int a,b;while(cin>>a>>b){r=0;int t1=max(a,b);int t2=min(a,b);cout<<mu(t2,t1)<<endl;} }轉(zhuǎn)載于:https://www.cnblogs.com/baccano-acmer/p/9791476.html
總結(jié)
- 上一篇: P4555 最长双回文串
- 下一篇: 牛客提高R5 A.同余方程