1. 程式人生 > 其它 >int float double型 printf輸出規則

int float double型 printf輸出規則

problem:

計算

a^b的值

啊哈哈,這不有手就行麼,簡單入門紅題,跑個迴圈不就出來了嘛——土蛋

可資料毒瘤小k,給出了下面一個數據

a = 231 , b = 2 31

土蛋瘋了,於是去加工修煉,終於練就快速冪本領,擊敗了了毒瘤小k

快速冪

思路:

舉個例子:

215

step1.ans = 15 個 2 相乘.
step2.ans = 7 個 4 相乘再乘上一個 2.
step3.ans = 3 個 16 相乘再乘上 24.
step4.ans = 1 個 256 乘上 2
4*16.

從以上的步驟中不難看出,當我們求一個數的n次冪的時候,我們可以將它的兩兩進行配對相乘,
如果有多出來的一個數,則將它乘到答案中,否則繼續配對,直到只剩下一個數為止。
有一個小的注意事項,對答案進行初始化時,初始值應為1而不是0.

結合程式碼更加理解

#include <bits/stdc++.h>
using namespace std;
int main(){
	int ans=1,i,j,k,m,n,b;
	scanf("%d%d",&b,&m);
	while(m > 0){
		if(m % 2==1)
			ans = ans*b;
		b = b*b;
		m = m>>1;
	}
	printf("%d",ans);
	return 0;
}