NYOJ 881 小m的区间公约数

#include<stdio.h>
int t,num,l,r,a,b,i,max,flag;
int temp;
int gcd(int n,int m)
{
  if(n<m)
  {
    t=n;
    n=m;
    m=t;
  }
  while(n!=0)
  {
    r=m%n;
    m=n;
    n=r;
  }
  return (m);
}
int main()
{
  while(~scanf("%d%d",&a,&b))
  {
    temp=gcd(a,b);
    scanf("%d",&num);
    while(num--)
    {
      max=-1;
      scanf("%d%d",&l,&r);
      for(i=r<temp?r:temp;i>=l;i--)
      if(temp%i==0)
      {
        max=i;
        flag=1;
        break;
      }
      if(flag)
        printf("%d\n",max);
      else
        printf("-1\n");
    }
  }
}

时间: 2024-11-11 22:04:45

NYOJ 881 小m的区间公约数的相关文章

NYOJ 1067 Compress String(区间dp)

Compress String 时间限制:2000 ms  |  内存限制:65535 KB 难度:3 描述 One day,a beautiful girl ask LYH to help her complete a complicated task-using a new compression method similar to Run Length Encoding(RLE) compress a string.Though the task is difficult, LYH is

NYOJ 676 小明的求助

小明的求助 时间限制:2000 ms  |  内存限制:65535 KB 难度:2 描述 小明对数学很有兴趣,今天老师出了道作业题,让他求整数N的后M位,他瞬间感觉老师在作弄他,因为这是so easy! 当他看到第二道题目的时候,他就确定老师在捉弄他了,求出N^P的后M位,因为他不会了.你能帮他吗? 输入 第一行包含一个整数T(T <= 1000),代表测试数据组数. 接下来的T行每行含三个整数,N,P,M(1 <= N <= 10^10,1 <= P <= 10^15,1

NYOJ 928 小M的因子和(数论)

小M的因子和 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 小M在上课时有些得意忘形,老师想出道题目难住他.小M听说是求因子和,还是非常得意,但是看完题目是求A的B次方的因子和,有些手足无措了,你能解决这个问题吗? 输入 有多组测试样例 每行两个数 A ,B ,(1≤A,B≤10^9)  输出 输出A的B次方的因子和,并对9901取余. 样例输入 2 3 样例输出 15 分析:对A进行质因数分解,假设A = (p1^a1) * (p2^a2)*--*(pk^ak)

nyoj 48小明的调查作业

 小明的调查作业 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 小明的老师布置了一份调查作业,小明想在学校中请一些同学一起做一项问卷调查,聪明的小明为了实验的客观性,想利用自己的计算机知识帮助自己.他先用计算机生成了N个1到1000之间的随机整数(0<N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号.然后再把这些数从小到大排序,按照排好的顺序去找同学做调查.请你协助明明完成"去重"与"

nyoj 737 石子合并(区间DP)

737-石子合并(一) 内存限制:64MB 时间限制:1000ms 特判: No通过数:28 提交数:35 难度:3 题目描述: 有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆.求出总的代价最小值. 输入描述: 有多组测试数据,输入到文件结束. 每组测试数据第一行有一个整数n,表示有n堆石子. 接下来的一行有n(0< n <200)个数,分别表示这n堆石子的数目,用空

nyoj 1077 小博弈 【另类巴什博奕】

分析:分析当整除(a+b)的时候肯定是后者胜利,如果余数不等于0的时候,如果余数大于b肯定是前者胜利,否则后者胜利. 代码: import java.math.*; import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner cin = new Scanner(System.in); BigInteger n, a, b; while(cin.hasNext()){ n

nyoj 168 房间安排(区间覆盖)

房间安排 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 2010年上海世界博览会(Expo2010),是第41届世界博览会.于2010年5月1日至10月31日期间,在中国上海市举行.本次世博会也是由中国举办的首届世界博览会.上海世博会以“城市,让生活更美好”(Better City,Better Life)为主题,将充分探索21世纪城市生活. 这次世博会总投资达450亿人民币,创造了世界博览会史上的最大规模记录.吸引200个国家和国际组织参展.预计有7000万人次

NYOJ 144 小珂的苦恼【扩展gcd】

题目链接 /* 对于gcd(a,b)=ax+by,存在唯一的x和y使等式成立 */ #include<stdio.h> int gcd(int a,int b) { return b==0?a:gcd(b,a%b); } int main() { int s,p; int a,b,n; scanf("%d",&s); while(s--) { scanf("%d%d%d",&a,&b,&n); p=gcd(a,b); if

nyoj 737 石子合并(一)。区间dp

http://acm.nyist.net/JudgeOnline/problem.php?pid=737 数据很小,适合区间dp的入门 对于第[i, j]堆,无论你怎么合并,无论你先选哪两堆结合,当你把[i, j]合成一堆的那一步的时候,花费肯定就是sum[i....j] 可以用纸模拟下. 那么我们设dp[i][j]表示把i...j堆合成一堆的时候的最小花费. 比如dp[1][1] = 0.dp[1][2] = a[1] + a[2]; 那么要求dp[i][j],则可以是dp[i][k] + d