杭電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,...