杭電oj人見人愛A B

2021-10-14 18:41:58 字數 1086 閱讀 6263

杭電oj人見人愛a^b

最先想到的就是pow()函式,但是在測試過程中發現pow()函式對輸入的資料有諸多限制,可能導致錯誤的情況:

1.如果底數 x 為負數並且指數 y 不是整數,將會導致 domain error 錯誤。

2.如果底數 x 和指數 y 都是 0,可能會導致 domain error 錯誤,也可能沒有;這跟庫的實現有關。

3.如果底數 x 是 0,指數 y 是負數,可能會導致 domain error 或 pole error 錯誤,也可能沒有;這跟庫的實現有關。

4.如果返回值 ret 太大或者太小,將會導致 range error 錯誤。

解決方案:同餘方程&快速冪取模演算法

同餘方程:

因要求輸出最後三位數字,故在運算時,只取最後三位數字進行運算。

#include

using namespace std;

intmain()

return0;

}

快速冪取模演算法:

1.模運算與乘法的性質

乘積取模可以在乘之前先取模

x * y % d = ((x % d) * (y % d)) % d;

比如:a*a%c = ((a % c) * ( a % c)) % c;

2.本題公式

當b為偶數時:ab mod c = ((a2)b/2) mod c

當b為奇數時:ab mod c = ((a2)b/2× a) mod c

因此快速冪實際是分治演算法,每次將b分一半,直到b=0;):

#include

#include

#include

#include

#include

#include

using namespace std;

typedef

long

long ll;

ll quick_mod

(ll m,ll n,ll k)

}int

main()

return0;

}

杭電OJ 2033 人見人愛A B

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

杭電oj2033 人見人愛A B

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

人見人愛A B

最近做了幾個acm的題,感覺真挺經典的。分享乙個覺得有點意思的,呵呵 problem description 求a b 的最後三位數表示的整數。說明 a b 的含義是 a的 b次方 input 輸入資料報含多個測試例項,每個例項佔一行,由兩個正整數a和 b組成 1 a,b 10000 如果 a 0,...