【第七届蓝桥杯】寒假作业

题目:寒假作业

现在小学的数学题目也不是那么好玩的。
看看这个寒假作业:

   □ + □ = □
   □ - □ = □
   □ × □ = □
   □ ÷ □ = □
   

   (如果显示不出来,可以参见【图1.jpg】)


    图1.jpg
每个方块代表1~13中的某一个数字,但不能重复。
比如:
 6  + 7 = 13
 9  - 8 = 1
 3  * 4 = 12
 10 / 2 = 5

以及: 
 7  + 6 = 13
 9  - 8 = 1
 3  * 4 = 12
 10 / 2 = 5

就算两种解法。(加法,乘法交换律后算不同的方案)
 

你一共找到了多少种方案?


请填写表示方案数目的整数。

注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。


答案:64


#include<stdio.h> 
int a[14], b, c, sum = 0; 
bool isVisit[14]; 
bool test(int next) { 
	if(3 == next) 
		if (a[1] + a[2] != a[3])
			return false; 
	if(6 == next) 
		if(a[4] - a[5] != a[6]) 
			return false;  
	if (9 == next) 
		if (a[7] * a[8] != a[9]) 	
			return false; 
	if (12 == next) 
		if (a[10] / a[11] != a[12] || a[10] % a[11] != 0) 
			return false;
	return true; 
} 
void dfs(int num) { 
	if (13 == num) 
		if ((a[3] == a[1] + a[2]) && (a[6] == a[4] - a[5]) && 
			(a[9] == a[7] * a[8]) && (a[12] == a[10] / a[11])) 
			sum++;
	for (int i = 1; i <= 13; i++)
		if (isVisit[i] == 0) { 
			isVisit[i] = 1; 
			a[num] = i; 
			if (!test(num)) { 
				isVisit[i] = 0; 
				continue; 
			} 
			dfs(num + 1); 
			isVisit[i] = 0; 
		} 
} 
int main() { 
	dfs(1); 
	printf("%d\n", sum); 
	return 0; 
}

第七届蓝桥杯所有组试题与部分答案

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Homilier

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值