• 1062. 最简分数(20)


    1062. 最简分数(20)

    时间限制
    400 ms
    内存限制
    65536 kB

    一个分数一般写成两个整数相除的形式:N/M,其中M不为0。最简分数是指分子和分母没有公约数的分数表示形式。

    现给定两个不相等的正分数 N1/M1 和 N2/M2,要求你按从小到大的顺序列出它们之间分母为K的最简分数。

    输入格式:

    输入在一行中按N/M的格式给出两个正分数,随后是一个正整数分母K,其间以空格分隔。题目保证给出的所有整数都不超过1000。

    输出格式:

    在一行中按N/M的格式列出两个给定分数之间分母为K的所有最简分数,按从小到大的顺序,其间以1个空格分隔。行首尾不得有多余空格。题目保证至少有1个输出。

    输入样例:
    7/18 13/20 12
    
    输出样例:
    5/12 7/12

    注意:必须在两者之间,不能等于其中一个。
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 
     4 const double e=1e-6;
     5 int lcd(int a,int b){
     6     return a%b==0?b:lcd(b,a%b);
     7 }
     8 int main(){
     9     int n1,n2,m1,m2,k;
    10     scanf("%d/%d %d/%d %d",&n1,&m1,&n2,&m2,&k);
    11     double d1=1.0*n1*k/m1,d2=1.0*n2*k/m2;
    12     if(d1>d2) swap(d1,d2);
    13     int i=ceil(d1+e),j=floor(d2-e);
    14     int notFirst=0;
    15     for(;i<=j;i++){
    16         if(lcd(i,k)==1){
    17             if(notFirst++) printf(" ");
    18             printf("%d/%d",i,k);
    19         }
    20     }
    21     return 0;
    22 } 
  • 相关阅读:
    按钮设计
    图标设计
    滤镜与通道
    路径、形状工具与选区
    类的无参方法
    类和对象
    阅读器关闭时尝试调用Read无效时的解决方法
    进入ASP .net mvc的世界
    linux命令-vim
    linux命令-分区表fstab
  • 原文地址:https://www.cnblogs.com/Fresh--air/p/8570198.html
Copyright © 2020-2023  润新知