求a的b次方
public
static
intquickpower
(int a,
int b)
base *= base;
//base自乘,由a^(2^n)變成a^(2^(n+1))
b >>=1;
//位運算,b右移一位,如1010變成101(把最右邊的1移掉了),除以2^1
}return ans;
}
取餘運算
取餘運算有一些好用的性質,包括:
(a+b) \mod b = (a \mod b + b \mod b) \mod b(a+b)mod b=(a mod b+b mod b)mod b
(a×b) \mod b = ((a \mod b) × (b \mod b)) \mod b(a×b)mod b=((a mod b)×(b mod b))mod b
證明都很簡單,如果要說服自己的話拿起筆試試吧。可設 a = k_a × b + r_aa=k
a ×b+r
a ……
於是快速冪過程中可以
public
static
intquickpower
(int a,
int b,
int m)
base *= base;
base %= m;
b >>=1;
}return ans;
}
快速冪模板 (求餘)
相信童鞋們做題多了會發現,很多題都是要求次冪的。如果資料比較小,用int 或者long long 的暴力也是可以出結果的,但很多題就不盡如人意了,資料往往非常大,long long 可能都存不下,甚至還會爆記憶體,導致資料出錯。這時候就需要更快更省記憶體的演算法 快速冪 快速冪快速冪,就是快!想象一...
快速冪求x的n次方
o logn 的時間複雜度求x的n次方,x為自然數,n為整數?如果 power 5 為奇數,result儲存當前的多餘的乙個4,並在返回結果時一併與結果相乘。2 10 2 2 2 2 2 2 2 2 2 2 4 5 4 4 4 4 4 4 4 4 4 16 2 16 2 16 16 256 如果 p...
D a的b次 快速求冪
time limit 1000 ms memory limit 32768 kb os windows source acm程式設計期末考試 2006 06 07 給你兩個數a和b,計算a的b次方,輸出a的b次方的最後三位數所表示的整數。input 輸入資料報含多個測試例項,每個例項佔一行,由兩個正...