記錄一下當時是怎麼理解的,以備後面忘記可以回顧。
快速冪普通求 ab, 就是讓aaa…乘b次,時間複雜度為o(n)…
快速冪 能快到o(log n).. 原理是
比如 a5。 5 二進位制為 0101;a5=a^ (2^ 01 +2^10 +2 ^2*1) ;
5 = 20*1 +21*0 +2 2*1
a^5^= a^ 2^0^*1 * a^ 2^1^*0 * a^2 ^2^*1 ;
int mod(int a,int b)
a = a*a; //a*a =a^2,表示下次二進位制走到第二位時a的值
// 對應二進位制四位0000 a->a^2->a^4->a^8
b>>=1; //二進位制右移一位,倒數第二個現在是倒是第乙個,然後重複while
}
return res;
}
一般用到快速冪的情況, 有些演算法題 時間限制,取模題 相乘超過long long 等。。
tepedef long long ll;
ll res=1;
while(b>0)
a = a*a%n;
b>>=1;
}return res;
}
再補
快速乘 和 基本快速冪一樣用法
比如 a5 = a20
1 + a21
0 + a22*1
int pow_mul(int a,int b)
a = a+a; //相加 2a->4a->8a;
b >>= 1;
}return res;
}
初學 快速冪 的理解
部落格停了差不多三個月,雖然這一段時間在學演算法,但從來沒有寫部落格。今天看了一上午的快速冪,突然想寫寫部落格,增加一下自己的記憶!這個博文知識簡單介紹一下演算法中取餘的原因 1至於快速冪的概念不詳細記錄了。當我們想求a的b次冪對c取余時,我們會直接想到用這個演算法 int ans 1 for i ...
快速冪的演算法理解
一直聽說過快速冪,一直沒有用過。這下稍微有了點空閒時間,做個筆記自己看看。求乙個數的n次冪常見的是n次迴圈。例如。double power double base,int exponent while exponent return flag?1 total total 複雜度是o n 快速冪演算法...
對快速冪的理解 C )
時間複雜度是o n 級別,而快速冪能做到o logn 其實b是可以拆成二進位制的,該二進位制數第i位的權 值 為2 i 1 比如說b 11時 11的二進位制是1011,這三項 好像 不怎麼不好求 指數 你可以用longlong 或者用mod也可以 return ret 講到二進位制 一般都會想到這兩...