当前位置:网站首页>[pat (basic level) practice] - [simple mathematics] 1062 simplest fraction

[pat (basic level) practice] - [simple mathematics] 1062 simplest fraction

2022-07-06 00:57:00 IronmanJay

One 【 questions 】

  • Class B

Two 【 Title number 】

  • 1062 Simplest fraction (20 branch )

3、 ... and 【 Title Description 】

  • A fraction is usually written as the division of two integers : N / M N/M N/M, among M M M Not for 0. The simplest fraction is a fraction representation in which the numerator and denominator have no common divisor .
  • Now let's give two unequal positive fractions N 1 ​ / M 1 N_1​ /M_1 N1/M1​ and N 2 ​ / M 2 N_2​ /M_2 N2/M2​ , You are required to list them in descending order. The denominator between them is K K K The simplest fraction of .

Four 【 Title Example 】

  • Input format :
    Enter and press... In one line N / M N/M N/M The format gives two positive fractions , Followed by a positive integer denominator K K K, Separated by spaces . The title guarantees that all integers given do not exceed 1000.

  • Output format :
    Press in a line N / M N/M N/M The format lists the denominator between two given scores K K K All the simplest fractions of , In order from small to large , In the meantime 1 Space separation . There must be no extra space at the beginning and end of the line . The title is guaranteed to have at least 1 Outputs .

  • sample input :
    7/18 13/20 12

  • sample output :
    5/12 7/12

5、 ... and 【 Their thinking 】

  • The idea of this question is quite normal , The general idea is to convert two fractions into decimals , Traverse all the scores between two numbers , You need to ensure that this score is between two numbers , And it is the simplest fraction ( As long as the numerator and denominator have no common divisor, it is the simplest fraction ), Because we should ensure that the denominator is given K K K, So from 1 So let's start walking through K K K, Look for every possible score , Output only when conditions are met . But there are a few things to note , As shown below :
    ①: The result of division needs to be used d o u b l e double double type , Because there must be scores
    ②: Note that the two inputs of the topic are not necessarily in order , Need to compare the size , Convenient, the back is quite
    ③: Pay attention to the spaces , There is no space in front of the first output , There is a space in front of the rest of the output

6、 ... and 【 The final score 】

  • 20 branch

7、 ... and 【 Code implementation 】

#include<stdio.h>
#include<stdbool.h>

bool HasCommonDivisor(int i,int k)
{
    
    for(int j = 2;j<=i;j++)
    {
    
        if(i % j == 0 && k % j == 0)
        {
    
            return true;
        }
    }
    return false;
}


int main()
{
    
    int n1,m1,n2,m2,k;
    scanf("%d/%d %d/%d %d",&n1,&m1,&n2,&m2,&k);
    double d1 = (double)n1 / m1;
    double d2 = (double)n2 / m2;
    bool flag = true;
    if(d1 > d2)
    {
    
        double temp = d2;
        d2 = d1;
        d1 = temp;
    }
    for(int i = 1;i<k;i++)
    {
    
        if(!HasCommonDivisor(i,k))
        {
    
            double d = (double)i / k;
            if(d > d1 && d < d2)
            {
    
                if(flag == true)
                {
    
                    printf("%d/%d",i,k);
                    flag = false;
                }
                else
                {
    
                    printf(" %d/%d",i,k);
                }
            }
        }
    }
    return 0;
}

8、 ... and 【 Submit results 】

 Insert picture description here

原网站

版权声明
本文为[IronmanJay]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140158542146.html