问题标题: 酷町堂:3795 分数乘法

0
0
已解决
汪艾辰
汪艾辰
高级光能
高级光能

题目链接: 酷町堂:3795

3795   分数乘法

经验值:1200 时间限制:1000毫秒 内存限制:128MB

题目描述 Deion

酷町猫最近在学习分数,它想用自己学到的计算机知识,来计算分数乘法的结果。
输入两个分数a,b,求出它们相乘的结果。
例如:
(2/4) * (2/4) ,它们的结果为:(2 * 2) / (4 * 4) = 4/16 = 1/4。

(4/2) * (4/2) ,它们的结果为:(4 * 4) / (2 * 2) = 16/4 = 4。

输入描述 Input Deion

输入4个空格隔开的整数a1,a2,b1,b2。分别表示分数a的分子,分母,分数b的分子,分母。

输出描述 Output Deion

输出分数a*b的结果(需要约分)。

样例输入 Sample Input

2 4 2 4

样例输出 Sample Output

1/4

数据范围及提示 Data Size & Hint

输入的数的数据范围均在1到100000之间

 

 

 

 

 

 

 

 

 

mine:

#include<iostream>

#include<cmath>

using namespace std;

long long l(long long a,long long b){

    for(long long i=max(a,b);i>=sqrt(max(a,b));i--){

        if(a%i==0&&b%i==0){

            return i;

        }

    }

    return 1;

}

int main(){

    long long a,b,x,y,c,d,p;

    cin>>a>>b>>x>>y;

p=l(a*x,b*y);

    c=a*x/p;

    d=b*y/p;

if(d==1){

cout<<c;

}

else{

     cout<<c<<"/"<<d;

}

return 0;

}


0
0
包思远
包思远
新手启示者
新手启示者

先把输入的数中第1个和第3个相乘,把x赋值为它们的积,再把第2个和第4个也相乘,把y赋值为它们的积;

接着找x和y的最大公因数,,把z赋值为这个最大公因数,再把x和y分别除以z,最后输出x和y就行了,中间用“/”隔开

0
包思远
包思远
新手启示者
新手启示者

对了,如果y是1的话,y和“/”就不用输出了,输出一个x就行

我要回答