Judge 快速冪 同餘

2021-08-06 07:40:43 字數 1277 閱讀 4464

時間限制: 1 sec

記憶體限制: 128 mb

提交: 1011

解決: 125

統計吃了乙個放大果實(惡魔果實的一種),高呼:「

海賊王に、俺はなる!」

ocean每使用一次能力,就可以將乙個物品的價值放大$x$倍(原價值乘以$x$)。

但是哪有這麼好的事情?

物品的價值是有限度的,姑且認為物品的價值上界為$m$。

如果經過放大後物品的價值大於或者等於$m$,那麼該物品價值將恆定以$m$的值減少,直到小於$m$為止。

比如價值為$19,m = 6$:要減少$3$次$m$,即$19 - 6 = 13,13 - 6 = 7,7 - 6 = 1 < 6。$

假設物品初始的價值為$1$,ocean會對該物品使用$n$次能力。

他想知道經過$n$次放大之後,物品的價值是否大於$y$?

第一行輸入乙個整數$t$,代表有$t$組測試資料。

每組資料依次輸入四個整數$x,n,m,y,$分別代表上面提到的資訊。

注:$1 <= t <= 100000,1 <= x, n <= 10^9,1 <= m <= 10^9,|y| <= 2 * 10^9。$

若最後物品的價值大於$y$請輸出"yes",反之輸出"no"。(輸出結果不帶引號)

2

2 3 5 4

3 10 7 3

no

yes

對第一組測試資料,

第一次放大後物品價值為$2,2 < 5,$不減少。

第二次放大後物品價值為$4,4 < 5,$不減少。

第三次放大後物品價值為$8,8 > 5,$每次減少$5$,則$8 - 5 = 3 < 5$合法。

最後價值為$3,3 < 4。$

ps:在這裡給出快速冪的模板**:

int pow2(int a,int b)

return r;

}

取餘情況時:

int result(int a,int b,int m)

return d;

}

#include #include using namespace std;

long long x;

int main()

if(k>y)

printf("yes\n");

else

printf("no\n");

} return 0;

}

同餘定理 快速冪

同餘定理 a b c a c b c a c b c c 證明 前一種 a b a c b 為c的 倍數即可 提取b得到 b a a c 易知其為 c的 倍數 得證 一 一般的冪次取餘 主要利用 a b c a c b c ll normal mod ll a,ll b,ll c return an...

快速冪及同餘定理

同餘定理 給定乙個正整數m,如果兩個整數a和b滿足 a b 能夠被m整除,即 a b m得到乙個整數,那麼就稱整數a與b對模m同餘,記作a b mod m 性質 1傳遞性 若a b mod m b c mod m 則a c mod m 2同余式線性運算 若a b mod m c d mod m 則a...

數數 (數學)(快速冪 同餘定理)

數數 問題描述 小 star 還不會數數。有一天他看到了一張奇怪的數表,上面的每乙個數各自都由相同數字構成,比如 11111111 66666 於是他想自己從 1 慢慢數到這個數字。多少 star 有個很不好的習慣,每數到一定個數就會從頭開始數起。現在請你幫忙求出,他最後數出來的數是多少。輸入 第一...