patb1062 最简分数(20)

#include <iostream>
#include <cstdio>
using namespace std;


int main()
{
    int x1,y1,x2,y2,down;
    scanf("%d/%d %d/%d %d",&x1,&y1,&x2,&y2,&down);
    int minnum=x1*down*y2;
    int maxnum=x2*down*y1;
    int sum=0;
    for(int i=minnum;i<=maxnum;i++){
        if(i%(y1*y2)==0 ){
//          printf("%d/%d",i/(y1*y2),down);
            if(down%(i/(y1*y2))!=0)
                sum++;
        }
    }
    for(int i=minnum;i<=maxnum;i++){
        if(i%(y1*y2)==0 && down%(i/(y1*y2))!=0){
            printf("%d/%d",i/(y1*y2),down);
            sum--;
            if(sum!=0) putchar(' ');
        }
    }
    return 0;

}



#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;


int gcd(int a,int b){
    return b==0 ? a : gcd(b,a%b);
}


int main()
{
    int x1,y1,x2,y2,u;
    scanf("%d/%d %d/%d %d",&x1,&y1,&x2,&y2,&u);
    int num=1;
    if(x1*y2 > x2*y1){
        swap(x1,x2);
        swap(y1,y2);
    }
    while(x1*u>=y1*num) num++;
    bool flag=false;
    while(x1*u<y1*num && num*y2<u*x2){
        if(gcd(num,u)==1){
            if(!flag){
                flag=true;
            }else{
                printf(" ");
            }
            printf("%d/%d",num,u);
        }
        num++;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_37816373/article/details/80382765