蓝桥杯Problem B: 奇怪的分式

    xiaoxiao2021-03-25  101

    问题及代码:

    Problem B: 奇怪的分式

    Time Limit: 1 Sec   Memory Limit: 128 MB Submit: 1142   Solved: 541 [ Submit][ Status][ Web Board]

    Description

    上小学的时候,小明经常自己发明新算法。一次,老师出的题目是:   1/4 乘以 8/5    小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1.png)

    老师刚想批评他,转念一想,这个答案凑巧也对啊,真是见鬼!  对于分子、分母都是 1~9 中的一位数的情况,还有哪些算式可以这样计算呢?  请写出所有不同算式的个数(包括题中举例的)。  显然,交换分子分母后,例如:4/1 乘以 5/8 是满足要求的,这算做不同的算式。  但对于分子分母相同的情况,2/2 乘以 3/3 这样的类型太多了,不在计数之列!

    请输出所有满足小明新算法的分式组合,以及这类分数组合的个数。

    Input

    没有输入

    Output

    请输出所有满足小明新算法的分式组合,以及这类分数组合的个数。

    Sample Output

    1/2 5/4 1/4 8/5 1/6 4/3 1/6 6/4 ... 9/4 8/9 n

    #include <stdio.h> int gcd(int m,int n)//求最大公约数 { int t; if(m<n) { t=m; m=n; n=t; } while(m%n!=0) { t=m%n; m=n; n=t; } return n; } int main() { int a,b,c,d; int m,n,p,q; int i,j; int count=0; for(a=1;a<=9;a++) { for(b=1;b<=9;b++) { if(a==b) continue; for(c=1;c<=9;c++) { for(d=1;d<=9;d++) { if(c==d) continue; m=a*c; n=b*d; p=a*10+c; q=b*10+d; i=gcd(m,n);//求最大公约数 j=gcd(p,q); m/=i; n/=i; p/=j; q/=j; if(m==p&&n==q)//约分后是否相等 { printf("%d/%d %d/%d\n",a,b,c,d); count++; } } } } } printf("%d\n",count); return 0; } 此题需要注意的就是约分,即求最大公约数。

    约分后才可判断是否相等.
    转载请注明原文地址: https://ju.6miu.com/read-18909.html

    最新回复(0)