• 铺瓷砖


    1.铺瓷砖
    (tile.cpp/c/pas)
    【问题描述】
      有一面很长很长的墙。 你需要在这面墙上贴上两行瓷砖。 你的手头有两种不同尺寸的瓷砖,你希望用这两种瓷砖各贴一行。瓷砖的长可以用分数表示,贴在第一行的每块瓷砖长度为 A/B ,贴在第二行的每块瓷砖长度为C/D 。本问题中你并不需要关心瓷砖的宽度。

      如上图所示, 两排瓷砖从同一起始位置开始向右排列, 两排瓷砖的第一块的左端的缝隙是对齐的。你想要知道,最短铺多少距离后,两排瓷砖的缝隙会再一次对齐。
    【输入】
      输入的第 1 行包含一个正整数 T,表示测试数据的组数。接下来 T 行,每行 4 个正整数 A,B,C,D,表示该组测试数据中,两种瓷砖的长度分别为 A/B 和C/D 。
    【输出】
      输出包含 T 行, 第 i 行包含一个分数或整数, 表示第 i 组数据的答案。 如果答案为分数,则以“X/Y”的格式输出,不含引号。分数必须化简为最简形式。如果答案为整数,则输出
    一个整数 X。
    【输入输出样例 1】
     tile.in 
      2
      1 2 1 3
      1 2 5 6

     tile.out
      1
      5/2
    见选手目录下的 tile/tile1.in 与 tile/tile1.out
    【输入输出样例 1 说明】
      对于第一组数据,第一行瓷砖贴 2 块,第二行贴 3 块,总长度都为 1,即在距离起始位置长度为 1 的位置两行瓷砖的缝隙会再次对齐。对于第二组数据,第一行瓷砖贴 5 块,第二行贴 3 块,总长度都为 5/2 。
    【输入输出样例 2】
      见选手目录下的 tile/tile2.in 与 tile/tile2.out
    【数据规模与约定】
      对于 50%的数据,1≤A,B,C,D≤20
      对于 70%的数据,T≤10
      对于 100%的数据,T≤100,000,1≤A,B,C,D≤10,000

    【题目分析】

      各种找lcm,数据类型要开long long,不然你会炸的很开心

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    using namespace std;
    #define ll long long
    ll a,b,c,d;
    ll fenmu,fenzi;
    ll fenzi1,fenzi2,yueshu;
    int t;
    ll gcd(ll x,ll y)
    {
        if(!y) return x;
        return gcd(y,x%y);
    }
    ll lcm(ll x,ll y)//最小公倍数为两数相乘再除以gcd,为了防爆,可以先除再乘 
    {
        ll zdgys=gcd(x,y);
        return x/zdgys*y;
    }
    int main()
    {
        freopen("tile.in","r",stdin);
        freopen("tile.out","w",stdout);
        scanf("%d",&t);
        while(t--)
        {
            scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
            fenmu=lcm(b,d);//将两个分数通分,找到两分母最小公倍数 
            fenzi1=fenmu/b*a;//分母通分之后相对应的分子 
            fenzi2=fenmu/d*c;
            fenzi=lcm(fenzi1,fenzi2);//两分子对答案分子的贡献 
            if(fenzi%fenmu==0)
                printf("%lld
    ",fenzi/fenmu);
            else
            {
                yueshu=gcd(fenzi,fenmu);
                printf("%lld/%lld
    ",fenzi/yueshu,fenmu/yueshu);
            }
        }
        fclose(stdin);fclose(stdout);
        return 0;
    }
  • 相关阅读:
    BZOJ1264 [AHOI2006]基因匹配Match 动态规划 树状数组
    BZOJ1845 [Cqoi2005] 三角形面积并 扫描线 计算几何
    BZOJ1258 [CQOI2007]三角形tri 模拟
    BZOJ4972 八月月赛 Problem B 小Q的方格纸 二维前缀和
    BZOJ1218 [HNOI2003]激光炸弹 二维前缀和
    BZOJ1263 [SCOI2006]整数划分 高精度
    BZOJ1209 [HNOI2004]最佳包裹 三维凸包 计算几何
    BZOJ1207 [HNOI2004]打鼹鼠 动态规划
    BZOJ1202 [HNOI2005]狡猾的商人 spfa
    BZOJ1201 [HNOI2005]数三角形 大力出奇迹
  • 原文地址:https://www.cnblogs.com/xiaoningmeng/p/6005524.html
Copyright © 2020-2023  润新知