Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%lld & %llu

Description

Ocean从影视城回来后,吃了一个放大果实(恶魔果实的一种),高呼:“海贼王に、俺はなる!”

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$?

Input

第一行输入一个整数$T$,代表有$T$组测试数据。 
每组数据依次输入四个整数$x,N,M,Y,$分别代表上面提到的信息。

注:$1 <= T <= 100000,1 <= x, N <= 10^9,1 <= M <= 10^9,|Y| <= 2 * 10^9。$

Output

若最后物品的价值大于$Y$请输出"YES",反之输出"NO"。(输出结果不带引号)

Sample Input

2
2 3 5 4
3 10 7 3

Sample Output

NO
YES

Hint

对第一组测试数据,

第一次放大后物品价值为$2,2 < 5,$不减少。

第二次放大后物品价值为$4,4 < 5,$不减少。

第三次放大后物品价值为$8,8 > 5,$每次减少$5$,则$8 - 5 = 3 < 5$合法。

最后价值为$3,3 < 4。$

真的不懂当时自己明明知道方法,但是就是提交不上去,还是自己的基础知识没有掌握好。同余定理没有掌握好。

  

 #include<stdio.h>

 int main()
{
int T;
scanf("%d",&T);
while(T--)
{
long long t,x;
int n,m,y;
t=;
scanf("%lld%d%d%d",&x,&n,&m,&y);
while(n!=)
{
if(n%) //这里的快速幂知识,和我记的模板并不一样,他是
t=(t*x)%m; //经过了自己的理解了的模板,我现在还没有到这一步
x=(x*x)%m;    
n=n/; //用到了同余定理
}
if(t>y) printf("YES\n");
else printf("NO\n");
}
return ;
}

同余定理的另一种表述方式

如果经过放大后物品的价值大于或者等于$M$,那么该物品价值将恒定以$M$的值减少,直到小于$M$为止。 
比如价值为$19,M = 6$:要减少$3$次$M$,即$19 - 6 = 13,13 - 6 = 7,7 - 6 = 1 < 6。$

J - Judge(快速幂)(同余定理)的更多相关文章

  1. 洛谷 P1226 【模板】快速幂||取余运算

    题目链接 https://www.luogu.org/problemnew/show/P1226 题目描述 输入b,p,k的值,求b^p mod k的值.其中b,p,k*k为长整型数. 输入输出格式 ...

  2. hdu1061Rightmost Digit(快速幂取余)

    Rightmost Digit Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  3. LightOJ - 1282 - Leading and Trailing(数学技巧,快速幂取余)

    链接: https://vjudge.net/problem/LightOJ-1282 题意: You are given two integers: n and k, your task is to ...

  4. 洛谷P1226 【模板】快速幂||取余运算

    题目描述 输入b,p,k的值,求b^p mod k的值.其中b,p,k*k为长整型数. 输入输出格式 输入格式: 三个整数b,p,k. 输出格式: 输出“b^p mod k=s” s为运算结果 S1: ...

  5. LuoguP1226 【模板】快速幂||取余运算

    题目链接:https://www.luogu.org/problemnew/show/P1226 第一次学快速幂,将别人对快速幂原理的解释简要概括一下: 计算a^b时,直接乘的话计算次数为b,而快速幂 ...

  6. hdu4767_Bell_矩阵快速幂+中国剩余定理

    2013长春赛区网络赛的1009题 比赛的时候这道题英勇的挂掉了,原因是写错了一个系数,有时候粗心比脑残更可怕 本题是关于Bell数,关于Bell数的详情请见维基:http://en.wikipedi ...

  7. 题解 P1226 【【模板】快速幂||取余运算】

    1.题目分析 原题 本题在于快速幂的使用,以及对long long的应用问题. 2.解题思路 快速幂 求幂常见用法: int pow(int a,int b) { int ans; for(int i ...

  8. [每日一题2020.06.15]P1226 【模板】快速幂取余运算

    我是题目 快速幂就是快速求 \(a^b\)的一种算法 快速幂 思想 : 比如我要求 \(6^9\) 首先将幂转化为二进制形式 : \[6^9 = 6^{1001} \tag{1} \] 可以得到 : ...

  9. 【模板】快速幂&取余运算

    输入\(b\),\(p\),\(k\)的值,求\(b^p mod k\)的值.其中\(b\),\(p\),\(k^2\)为长整型数. 1.普通做法 \(print\) \(pow(b,p)\)\(mo ...

随机推荐

  1. win10 切换语言英文版

    win10 切换英文语言 start > right click>control panel> time Language>laguage>Add >English ...

  2. 利用MemoryAnalyzer进行OutOfMemoryError的诊断分析

    这篇帖子只介绍利用MemoryAnalyzer进行简单的JVM的堆的分析,至于JVM的内部结构是怎么样的,这里不进行分析.好吧,废话不多说:首先如果我们要分析JVM某个时刻的Heap的对象分配情况,我 ...

  3. 菜单与内容下拉jQuery

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Hadoop Pipes

    [Hadoop Pipes] 1.MapContext的getInputSplit()可以用于获取当前mapper所对象的文件路经,也就是Pipes中,没有InputSplit接口/对象. 2.在Pi ...

  5. Oracle-11g-r2 实例囚笼(Instance Caging)配置

    实例囚笼(Instance Caging)应用场合: 在单台多 CPU 的服务器上,经常出现同时运行多个数据库实例的情况,此方式有利于提高硬件的使用率. 但是多个数据库实例运行,将会互相争用服务器资源 ...

  6. Win2003+apache+PHP+SqlServer2008 配置

    Win2003+apache+PHP+SqlServer2008 配置     安装前的准备: 1.Apache2.2.2 2.PHP5.2.17 3.SqlServer2008 4.sqlncli. ...

  7. Introduction Sockets to Programming in C using TCP/IP

    Introduction Computer Network: hosts, routers, communication channels Hosts run applications Routers ...

  8. .net手动编写Windows服务

    1,打开VS,新建一个windows服务程序.项目名称自定义,我这里用的默认名称:Service1 2,打开Service1,按F7查看代码.代码里有三个方法:public Service1().pr ...

  9. pyspider示例代码一:利用phantomjs解决js问题

    本系列文章主要记录和讲解pyspider的示例代码,希望能抛砖引玉.pyspider示例代码官方网站是http://demo.pyspider.org/.上面的示例代码太多,无从下手.因此本人找出一下 ...

  10. C#分布式事务解决方案-TransactionScope(转)

    出处:C#分布式事务解决方案-TransactionScope 引用一下别人的导读:在实际开发工作中,执行一个事件,然后调用另一接口插入数据,如果处理逻辑出现异常,那么之前插入的数据将成为垃圾数据,我 ...