这个题目,如果没找到方向,确实有点一头雾水。但是如果你找对方向了,AC是分分钟的事。答案就是看n和m是否有除1之外的公约数。

简单证明:设n和m最大公约数不是1,假设为p。n和m总可以化为一个数乘以k的形式吧,不妨令n=a*k,m=b*k(暂时不知道有什么用); 那么狼第一次遍历的洞口编号为0,m,2m......(假设这些洞的编号都在n-1以内),假设狼第i次进洞会超过n-1,则此时本应该是i*m,但是i*m>n-1,所以这次洞口的编号是(i*m)%n,但是,但是,但是(i*m)%n=i*b*k-a*k=(i*b-a)*k。(a*k,b*k派上用场了)[if(b<a<2b),a%b=a-b],说明洞口的编号还是k的倍数啊。。。但是p>1,这样狼就无法遍历所有的山洞,那么兔子就是有地方可以躲的。

题目大意:有n个山洞,编号为0~n-1,现在一只狼从0号洞口开始,每隔m-1(这里我对原题有点小疑问,原题是every m holes,但是案例是m-1才对)个洞进去抓兔子,问兔子最后能否躲过一劫。例如有n=6个洞,编号就是0、1、2、3、4、5,狼每隔m-1=1个洞去抓兔子,那么狼进入的山洞就是0、2、4、0、2、4......(无限循环了)。如果兔子躲在1、3、5号洞里,就是安全的。

Sample Input

2                              //测试案例数

1  2                          //m和n

2  2

Sample Output

NO

YES

#include<iostream>
using namespace std; int T,m,n;
int gcd(int a,int b)//这个求最大公约数函数最好自己记住,很重要的
{
return b==?a:gcd(b,a%b);
} int main()
{
cin>>T;
while(T--)
{
cin>>m>>n;
if(gcd(m,n)==)
cout<<"NO\n";
else
cout<<"YES\n";
}
return ;
}

2016HUAS_ACM暑假集训4F - 数论的更多相关文章

  1. 2016HUAS_ACM暑假集训4C - 递推

    题目大意:给你一个高为n ,宽为m列的网格,计算出这个网格中有多少个矩形. 这里我们可以这样看: 对于行:假如是m单位长度,则长度为1的矩形有m个,长度为2的矩形有m-1个......长度为m的只有1 ...

  2. 2016HUAS_ACM暑假集训4A - 递推

    利用组合公式C(n,m)=C(n-1,m)+C(n-1,m-1).也就是从n个数里面选择m个数.按递增方式放在每一层循环. 杨辉三角+二项式定理,还真是挺有“意思”的一道题.说实话,非原创.见谅... ...

  3. 2016HUAS_ACM暑假集训4D - 计数,排列

    一个错排公式的基础应用. 大致题意:求n个数的错误排列方式.(每个都要错) 在这里先贴一下错排公式:D(1)=0:D(2)=1:D(n)=(n-1)*(D(n-1)+D(n-2)) 它的推导也非常有意 ...

  4. 2016HUAS_ACM暑假集训4M - 基础DP

    简单的0-1背包问题,大家都会做的.题意不想解释太多. 简述题目的案例及以几个关键 Sample Input 1                            //测试组数T 5 10     ...

  5. 2016HUAS_ACM暑假集训4K - 基础DP

    我不知道怎么用DP,不过DFS挺好用.DFS思路很明显,搜索.记录,如果刚好找到总价值的一半就说明搜索成功. 题目大意:每组6个数,分别表示价值1到6的物品个数.现在问你能不能根据价值均分. Samp ...

  6. 2016HUAS_ACM暑假集训4B - 递推

    这种数学推理题目题意极其明显,在做的时候,可以多写几组,这样找起规律来会容易些.概括起来就是:题意简单暴力,案例毫无价值. 一个三角形最多可以把一个平面分成两部分,两个三角形最多是8(2+6)部分,而 ...

  7. 2016HUAS_ACM暑假集训3G - 还是畅通工程

    最小生成树,题目简单.套的Prim模板,其他的题目比较有意义. Sample Input 3                             //村庄个数1 2 1               ...

  8. 2016HUAS_ACM暑假集训3F - Jungle Roads

    这个题目属于最小生成树问题,可以用Prim,也可以用Kruskal(还没试).题意简单直接,给你一个图,求出它最小生成树的权值. 题目最有趣的地方就是图的顶点是字母,稍微处理一下就好了. Sample ...

  9. 2016HUAS_ACM暑假集训3C - Til the Cows Come Home

    单源最短路径,首先想到的是Dijkstra.Dijkstra算法的思路就不啰嗦了,概括起来就是时刻保持当前节点到目标节点的距离最短. 题目大意(不进行翻译解释了,就抽离为图来表达):有N个顶点和T条边 ...

随机推荐

  1. sql返回两个日期之间的日期_函数实现

    -- Description:返回两段日期之间的所有日期    <Description,,>-- ============================================ ...

  2. 作业七:团队项目——Alpha版本冲刺阶段005

    今日进展:编写代码. 今日安排:完成开始部分代码.

  3. http 301和302的区别

    1.什么是301转向?什么是301重定向? 301转向(或叫301重定向,301跳转)是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种, ...

  4. C# WebBrowser控件使用教程与技巧收集

    常用的方法 Navigate(string urlString):浏览urlString表示的网址 Navigate(System.Uri url):浏览url表示的网址 Navigate(strin ...

  5. 【转】输入/输出流 - 全面掌握IO

    File类: 程序中操作文件和目录都可以使用File类来完成即不管是文件还是目录都是使用File类来操作的,File能新建,删除,重命名文件和目录,但File不能访问文件内容本身,如果需要访问文件本身 ...

  6. 关于mongodb的复合索引新功能

    最新在做一个项目,由于查询字段较多,且查询较频繁,所以我做了一个复合索引,将所有需要查询的字段都做到索引里,做了一个名为s_1_m_1_c_1_v_1_year_1_month_1_week_1_da ...

  7. 第六章 第一个Linux驱动程序:统计单词个数

    现在进入了实战阶段,使用统计单词个数的实例让我们了解开发和测试Linux驱动程序的完整过程.第一个Linux驱动程序是统计单词个数. 这个Linux驱动程序没有访问硬件,而是利用设备文件作为介质与应用 ...

  8. 想学好web前端,需要看哪些书籍

    目前市场上HTML.CSS 类别书籍,都是大同小异,在当当网.卓越网搜索一下很多推荐.今天web前端大牛根据自己的经验总结如下:Javascript 的书籍推荐看老外写的,国内很多 Javascrip ...

  9. android studio 2.2.2下fragment的创建和跳转

    一,首先,Fragment是android应用中十分重要的一个功能,十分轻量化,也类似于activity一样,是一个个布局,可以相互跳转和传递参数.但是,它运行起来十分流畅,而且易于管理,下面是在学习 ...

  10. C#变量详解

    1,变量的分类: C#是一种类型安全的语言.每一个变量都要求定义为一个特定的类型,并且要求存储在变量中的值只能是这种类型的值. 值类型 在C#中你可以通过声明枚举类型或是结构类型来定义你自己的值类型. ...