求乙個數n次方後的末尾數(數論 快速冪)

2021-08-07 14:34:28 字數 1084 閱讀 4463

hdu1061-rightmost digit

hdu1097-a hard puzzle

這兩個oj題目思路幾乎一樣,都是為了快速求出乙個數n次方後的末尾數為都多少?

1的所有次方都是1

0的所有次方都是0

5的所有次方都是5

6的所有次方都是6

2^1=2 2^2=4 2^3=8 2^4=6(四個一迴圈)

3^1=3 3^2=9 3^3=7 3^4=1(四個一迴圈)

7^1=7 7^2=9 7^3=3 7^4=1(四個一迴圈)

4^1=4 4^2=6(兩個一迴圈)

8^1=8 8^2=4(兩個一迴圈)

9^1=9 9^2=1(兩個一迴圈)

下面以hdu1097-a hard puzzle為例

#includeusing namespace std;

int main();

int n, num, rmd, ans; // rmd = rightmost digit

scanf("%d", &n);

for (int i = 0; i < n; ++i)

}

#include//1097

#includeusing namespace std;

int main()

{ int a,b,c[4];

while(cin>>a>>b)

{ a=a%10;

c[0]=a;//一次方的末尾數

c[1]=(c[0]*a)%10;//二次方的末尾數

c[2]=(c[1]*a)%10;//三次方的末尾數

c[3]=(c[2]*a)%10;//四次方的末尾數

執行及結果

acm — rightmost digit

a hard puzzle

求乙個數n的因子數和n 2因子數 數論

求乙個數的因子數其實不必列舉1 n 的所有數,比如我求12的所有因子,我列舉到1時,12可以被1整除,同時我就可以知道另乙個數12也是他的因子,同理我列舉到2時,12可以被2整除,另乙個數6也可同時求出 即我們只需列舉到3就可以求出所有的因子了。可以發現,求n的所有因子數,我們只需要列舉到sqrt ...

求乙個數的整數次方

題目 求乙個數的整數次方。題目是如此的簡單,但是需要考慮的還是比較多 1.指數為負,底數是零 2.指數底數都是零 3.返回正常零和返回錯誤零的區別 4.底數為正,指數為負如何處理 5.考慮底數次方大的話,想效率問題 6.處理double數值相等問題 以下直接是 詳細考慮除底數指數全零的以上所有情況!...

劍指offer 求乙個數的n次方,不考慮大數問題

一定得注意取值,當指數小於0,指數大於0,指數等於0時 如果指數和底數都是0時怎麼辦,還有浮點數的比較 include define esp 0.0000001 typedef enum boolbool bool value num false 定義乙個全域性變數用來區分正確時返回的0和錯誤時返回...