zoukankan      html  css  js  c++  java
  • PAT-乙级-1062 最简分数

    一个分数一般写成两个整数相除的形式:N/M,其中 M 不为0。

    最简分数是指分子和分母没有公约数的分数表示形式。

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

    输入格式:

    输入在一行中按N/M的格式给出两个正分数,随后是一个正整数分母 K,其间以空格分隔。

    题目保证给出的所有整数都不超过 1000

    输出格式:

    在一行中按 / 的格式列出两个给定分数之间分母为 K 的所有最简分数,按从小到大的顺序,其间以 1 个空格分隔。

    行首尾不得有多余空格。

    题目保证至少有 1 个输出。

    输入样例:

    7/18 13/20 12
    

    输出样例:

    5/12 7/12



    分析:
      计算给定两个分数的值
      在两个值之间遍历分母为k的所有可能情况
      将该数通分后判断分母是否为k
      将所有结果输出即可
      PS:
        一定要通分
        输入的两个分数要保证左大右小


     1 //c++
     2 
     3 #include<iostream>
     4 using namespace std;
     5 
     6 //将分数转换为double
     7 double func(char *s){
     8   int a=0,b=0,i=0;
     9   for(;s[i]!='/';i++)
    10     a=a*10+s[i]-'0';
    11   for(i++;s[i]!='';i++)
    12     b=b*10+s[i]-'0';
    13   return 1.0*a/b;  
    14 }
    15 
    16 //计算最大公约数gcd
    17 int gcd(int a,int b){
    18     int m;
    19     if(a<b){
    20         m=a;
    21         a=b;
    22         b=m;
    23     }
    24     while(b){
    25         m=a%b;
    26         a=b;
    27         b=m;
    28     }
    29     return a;
    30 }
    31 
    32 int main(){
    33   char a[10],b[10];
    34   double da,db;
    35   int k,g,p,q,f=0;
    36   cin>>a>>b>>k;
    37   da=func(a);
    38   db=func(b);
    39   if(da>db){
    40       double t=da;
    41       da=db;
    42       db=t;
    43     }
    44   for(int i=1;i<=k*1000;i++){
    45       double v=1.0*i/k;
    46     if(da<v&&v<db){
    47       g=gcd(i,k);
    48       p=i/g;
    49       q=k/g;
    50       if(q==k){
    51         if(f){
    52           cout<<' ';
    53         }
    54         cout<<p<<'/'<<q;
    55         f=1;
    56       }
    57     }
    58   }
    59   return 0;
    60 }

      
  • 相关阅读:
    子类继承和调用父类的构造方法 (转)
    数组复制 System.arraycopy 与 Arrays.copyof()
    ArrayList的使用方法 (转)
    Eclipse 的debug 用法 (转)
    for each
    二维数组 排序 随机数 练习
    react 之 reflux 填坑
    react & vue 项目创建的方式
    数组实例的 copyWithin()
    es6的正则扩展笔记之修饰符
  • 原文地址:https://www.cnblogs.com/tenjl-exv/p/10080172.html
Copyright © 2011-2022 走看看