蓝桥杯

来源:互联网 发布:视频后期编辑软件 编辑:程序博客网 时间:2024/06/10 05:21
凑算式


     B      DEF
A + --- + ------- = 10
     C      GHI
     
(如果显示有问题,可以参见【图1.jpg】)
 
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。

比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。

这个算式一共有多少种解法?

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

分析:
和寒假作业那道题一样,填空题直接dfs递归就好了,主要注意除法的精度问题,答案是29。

代码在此:
#include<stdio.h>#include<string.h>#define SIZE 9 + 10int v[SIZE];int n = 9;double data[SIZE];int tot = 0;void dfs (int k) {if(k >= n){if(data[0]*1.0 + data[1]*1.0/data[2] + (data[3]*100+data[4]*10+data[5])*1.0/(data[6]*100+data[7]*10+data[8]) == 10.0)//if(data[0]*data[2]*data[6]*data[7]*data[8] + data[1]*data[6]*data[7]*data[8] + data[3]*data[4]*data[5]*data[2] == 10.0*data[2]*data[6]*data[7]*data[8])tot ++;return ;}int i;for(i = 1; i <= 9; i ++){if(v[i] == 0){v[i] = 1;data[k] = i;dfs(k+1);v[i] = 0;}}}int main () {memset(v, 0, sizeof(v));dfs(0);printf("%d", tot);return 0;}


0 0
原创粉丝点击