上小学的时候,小明经常自己发明新算法。一次,老师出的题目是:
1/4 乘以 8/5
小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45
(参见图1.png)
老师刚想批评他,转念一想,这个答案凑巧也对啊,真是见鬼!
对于分子、分母都是 1~9
中的一位数的情况,还有哪些算式可以这样计算呢?
请写出所有不同算式的个数(包括题中举例的)。
显然,交换分子分母后,例如:4/1 乘以 5/8
是满足要求的,这算做不同的算式。
但对于分子分母相同的情况,2/2 乘以 3/3
这样的类型太多了,不在计数之列!
注意:答案是个整数(考虑对称性,肯定是偶数)。请通过浏览器提交。不要书写多余的内容。
这么水的一道题,竟然做错了当时……不多说,就一句,浮点数运算存在误差!!!
1 #include<cstdio> 2 #include<cstring> 3 4 int gcd(int m,int n) 5 { 6 int t; 7 if(m<n) 8 { 9 t=m; 10 m=n; 11 n=t; 12 } 13 while(m%n!=0) 14 { 15 t=m%n; 16 m=n; 17 n=t; 18 } 19 return n; 20 } 21 22 int main() 23 { 24 int a,b,c,d; 25 int m,n,p,q; 26 int i,j; 27 int count=0; 28 for(a=1;a<=9;a++) 29 { 30 for(b=1;b<=9;b++) 31 { 32 if(a==b) 33 continue; 34 for(c=1;c<=9;c++) 35 { 36 for(d=1;d<=9;d++) 37 { 38 if(c==d) 39 continue; 40 m=a*c; 41 n=b*d; 42 p=a*10+c; 43 q=b*10+d; 44 i=gcd(m,n);//求最大公约数 45 j=gcd(p,q); 46 m/=i; 47 n/=i; 48 p/=j; 49 q/=j; 50 if(m==p&&n==q)//约分后是否相等 51 { 52 printf("%d/%d * %d/%d\n",a,b,c,d); 53 count++; 54 } 55 } 56 } 57 } 58 } 59 printf("%d\n",count); 60 return 0; 61 }
蓝桥杯-2014本科B-奇怪的分式,布布扣,bubuko.com
原文:http://www.cnblogs.com/youdiankun/p/3621955.html