九度OJ 1441 人見人愛 A B 二分求冪

2021-07-26 15:01:01 字數 980 閱讀 6610

此題涉及乙個非常重要的演算法:二分求冪。相對不好理解,消化如下:

關於二分求冪的原理見下圖:

a^b,基本的思想是將b進行二進位制轉化。所以**的主體是在b的二進位製化的while迴圈上進行改造:

while (b>0)

b/=2;

weight*=weight;

}

加紅部分為二進位製化的**。故二分求冪的**主體就是在做三件事:

①b%2,b/2

//指數二進位製化

②weight*=weight//計算二進位製化後的指數的該位權重

③ans*=pow

//將此位的計算結果累乘到最終結果上

完整**如下:

#include using namespace std;

int main()

b/=2;

weight*=weight;

weight%=1000;//結果只需最後三位

} //output

cout<

題目描述:求a^b的最後三位數表示的整數。說明:a^b的含義是「a的b次方」

輸入:輸入資料報含多個測試例項,每個例項佔一行,由兩個正整數a和b組成(1<=a,b<=10000),如果a=0, b=0,則表示輸入資料的結束,不做處理。

輸出:對於每個測試例項,請輸出a^b的最後三位表示的整數,每個輸出佔一行。

樣例輸入:

2 312 6

6789 10000

0 0

樣例輸出:

8

9841

2034 人見人愛A B

include include includeusing namespace std int main void for int i 0 i 100 i v1.clear v2.clear for int i 0 i temp v1.push back temp for int i 0 i temp...

2033 人見人愛A B

problem description hdoj上面已經有10來道a b的題目了,相信這些題目曾經是大家的最愛,希望今天的這個a b能給大家帶來好運,也希望這個題目能喚起大家對acm曾經的熱愛。這個題目的a和b不是簡單的整數,而是兩個時間,a和b 都是由3個整數組成,分別表示時分秒,比如,假設a為3...

1074 人見人愛A B

1074 人見人愛a b description aoj面已經有10來道a b的題目了,相信這些題目曾經是大家的最愛,希望今天的這個a b能給大家帶來好運,也希望這個題目能喚起大家對acm曾經的熱愛。這個題目的a和b不是簡單的整數,而是兩個時間,a和b 都是由3個整數組成,分別表示時分秒,比如,假設...