題目描述
在乙個風雨交加的夜晚,來自異世界的不願透露姓名的tmk同學獲得了兩種超強藥水a、b。根據說明書,tmk知道了這兩種藥水的作用:
(1)藥水a能使人的生命值提高,每飲用1個單位能使他生命值變成原來的x倍,即每飲用p個單位能使他的生命值變成原來的x^p(x的p次方)倍。
(2)藥水b能使人的能量值提高,每飲用1個單位能使他能量值變成原來的y倍,即每飲用q個單位能使他的能量值變成原來的y^q(y的q次方)倍。
於是tmk迫不及待地喝下了所有的a個單位的藥水a和b個單位的藥水b,他立馬體會到了自己能力的超強變化,然後他看了接下來的說明書:
藥水a和藥水b能互相抑制對方的負面效果,一旦生命值提公升的倍數和能量值提公升的倍數不相等,那麼在五個小時後將會發生非常嚴重的後果。
於是tmk同學慌了,他想知道自己提公升的生命值和能量值的倍數是否相等,由於他非常慌張,所以他把計算的重任交給你了。
作為埃森哲公司的一員,你覺得這個問題很簡單,這得益於埃森哲公司分享知識的文化。
分享知識已成為埃森哲源遠流長的文化。
埃森哲公司在幫助客戶進行行之有效的知識管理的同時,它的管理層在其內部也進行了成功的知識管理的實踐。如今,在埃森哲,分享知識已成為其源遠流長的文化。在很大程度上,埃森哲公司的成功得益於其強大的知識管理系統。
輸入描述:
第一行乙個整數t,代表有t組資料。(1<=t<=5000)輸出描述:每組資料僅一行,包含四個整數x,a,y,b,意義為題目描述。(1<=x,a,y,b<=10^9)
每組資料輸出一行」yes」或」no」(不包含雙引號),表示tmk提公升的生命值和能量值的倍數是否相等,相等為」yes」,不相等為」no」。示例1輸入
4輸出2 20 4 10
20 20 20 20
20 21 21 20
32768 32768 1048576 24576
yes為了避免直接計算巨大的結果,可以通過比較底數和指數的方法來解決——兩個冪比較,要麼底數相同比指數,要麼指數相同比底數。這道題可以先把x和y轉化為底數相同的冪,再比較各自的指數乘上對應的變化之後的大小。yes
no yes
比如x = m^cx, y = m^cy,那麼x^a=m^(cx*a),y^b=m^(cy*b),只需要比較cx*a與cy*b是否相等就可以了。
#include
int main()
bx = x; by = y;//將底數初始化預設為x y
//把x化為冪的形式
for (int i = 2; i*i <= x; ++i)
if (tx == 1)
else }}
//把y化為冪的形式
for (int i = 2; i*i <= y; ++i)
if (ty == 1)
else }}
//如果不是冪,就表示成x^1和y^1
if (cx == 0)cx = 1;
if (cy == 0)cy = 1;
if (bx==by&&cx*a == cy*b)printf("yes\n");//比較指數
else
printf("no\n");}}
L 用來作弊的藥水
l 用來作弊的藥水 在乙個風雨交加的夜晚,來自異世界的不願透露姓名的tmk同學獲得了兩種超強藥水a b。根據說明書,tmk知道了這兩種藥水的作用 1 藥水a能使人的生命值提高,每飲用1個單位能使他生命值變成原來的x倍,即每飲用p個單位能使他的生命值變成原來的x p x的p次方 倍。2 藥水b能使人的...
用來作弊的藥水
題目描述 在乙個風雨交加的夜晚,來自異世界的不願透露姓名的tmk同學獲得了兩種超強藥水a b。根據說明書,tmk知道了這兩種藥水的作用 1 藥水a能使人的生命值提高,每飲用1個單位能使他生命值變成原來的x倍,即每飲用p個單位能使他的生命值變成原來的x p x的p次方 倍。2 藥水b能使人的能量值提高...
用來作弊的藥水
在乙個風雨交加的夜晚,來自異世界的不願透露姓名的tmk同學獲得了兩種超強藥水a b。根據說明書,tmk知道了這兩種藥水的作用 1 藥水a能使人的生命值提高,每飲用1個單位能使他生命值變成原來的x倍,即每飲用p個單位能使他的生命值變成原來的x p x的p次方 倍。2 藥水b能使人的能量值提高,每飲用1...