nowcoder 90 L 用來作弊的藥水

2021-08-17 12:30:35 字數 1801 閱讀 1238

題目描述

在乙個風雨交加的夜晚,來自異世界的不願透露姓名的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

yes

no yes

為了避免直接計算巨大的結果,可以通過比較底數和指數的方法來解決——兩個冪比較,要麼底數相同比指數,要麼指數相同比底數。這道題可以先把x和y轉化為底數相同的冪,再比較各自的指數乘上對應的變化之後的大小。

比如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...