奇怪的分式

奇怪的分式

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

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

暴力出奇迹!暴力出奇迹!暴力出奇迹!!!

下面是爆破代码:

#include<stdio.h>
#include<math.h>
int isPrime(int x)
{
	int flag=1;
	for (int i = 2; i <= sqrt(x); i++) {
		if (x%i == 0){
			flag=0;
            break;
		}
	}
	return flag;
}
int main()
{
	int son, mom,up,un,flag,cnt=0;
	for (int i = 1; i <= 9; i++) {                 //左上
		for (int j = 1; j <= 9; j++) {             //左下
			for (int k = 1; k <= 9; k++) {         //右上
				for (int h = 1; h <= 9; h++) {     //右下
					if (i != j && k != h) {
                            flag = 0;
                            up = i * k;
                            un = j * h;
                            son = i * 10 + k;
                            mom = j * 10 + h;
                            for (int n = 1; n <= 9; n++) {
                                son = son / n;
                                if (isPrime(son))
                                    break;
                            }
                            for (int m = 1; m <= 9; m++) {
                                mom = mom / m;
                                if (isPrime(mom))
                                    break;
                            }

                            for (int p = 1; p <= 9; p++) {
                                if (son*p == up) {
                                    flag = 1;
                                    break;
                                }
                            }
                            if (flag == 1) {
                                for (int o = 1; o <= 9; o++) {
                                    if (mom*o == un) {
                                        cnt++;
                                        break;
                  }
                }
              }
            }
          }
        }
      }
    }
	printf("%d", cnt/2);
	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值