奇怪的分式

奇怪的分式

时间: 1ms        内存:128M

描述:

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


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

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

输入:

没有输入

输出:

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

示例输入:

示例输出:

1/2 5/4
1/4 8/5
1/6 4/3
1/6 6/4

...



9/4 8/9
n

提示:

参考答案(内存最优[744]):

#include<stdio.h>
int main(){
	int i,j,x,y,s=0;
	double a,b,c,d;
	for(i=1;i<=9;i++){
		for(j=1;j<=9;j++)
			for(x=1;x<=9;x++)
				for(y=1;y<=9;y++){
					if(x!=y&&i!=j){
						a=i*x;
						b=j*y;
						c=i*10+x;
						d=j*10+y;
						if(a/b==c/d)//如果是int的话,就都行了,所以应该用double
						{
							s++;
							printf("%d/%d %d/%d\n",i,j,x,y);
						}
					}
				}
				}
			printf("%d\n",s);
			return 0;
}
	

参考答案(时间最优[0]):

#include<cstdio>
int main()
{
    double a,b,c,d;
    int i,j,x,y,s=0;
    for(i=1;i<=9;i++)
    {
        for(j=1;j<=9;j++)
            for(x=1;x<=9;x++)
                for(y=1;y<=9;y++)
                {
                    if(x!=y&&i!=j)
                    {
                        a=i*x;
                        b=j*y;
                        c=i*10+x;
                        d=j*10+y;
                        if(a/b==c/d)
                        {
                            s++;
                            printf("%d/%d %d/%d\n",i,j,x,y);
                        }
                    }

                }
    }
    printf("%d\n",s);
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注