此題涉及乙個非常重要的演算法:二分求冪。相對不好理解,消化如下:
關於二分求冪的原理見下圖:
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
樣例輸出:
89841
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個整數組成,分別表示時分秒,比如,假設...