zoukankan      html  css  js  c++  java
  • codeforces 340A The Wall(简单数学题)

    题意:输入a,b,x,y,a,b分别是两人的步数(每a块砖,刷一次),则有一些砖被两人同时刷到了,问[x,y]区间内有多少块砖同时被两人刷到。

    分析:就是求[x,y]中有多少个能把a,b的最小公倍数lcm=a*b/gcd(a,b)整除的数字。

    求出[x,y]区间上出现的第一个和最后一个满足条件的数字 l,r ,那么答案就是(r-l)/lcm+1。

     1 #include<cstdio>
     2 #include<cmath>
     3 
     4 int gcd(int a,int b)
     5 {
     6     if (b == 0) return a;
     7     return gcd(b,a%b);
     8 }
     9 
    10 int main()
    11 {
    12     int x,y,a,b;
    13     scanf("%d%d%d%d",&x,&y,&a,&b);
    14     int n=gcd(x,y);
    15     int m=x*y/n;
    16     int l,r;
    17 
    18     if(a%m==0)
    19         l=a;
    20     else
    21         l=a/m*m+m;
    22     if(b%m==0)
    23         r=b;
    24     else
    25         r=b/m*m;
    26     printf("%d
    ",(r-l)/m+1);
    27     return 0;
    28 }
    View Code
  • 相关阅读:
    10 Iterable之遍历Map、Set、Array
    9 Map和Set
    8 循环
    5 字符串
    6 数组
    4 数据类型
    2 变量
    实现简单的邮件收发器(十二)
    10.19 初识django
    10.18 数据库之索引优化方案
  • 原文地址:https://www.cnblogs.com/zstu-abc/p/3292996.html
Copyright © 2011-2022 走看看