第七届蓝桥杯大赛个人赛省赛(软件类) C语言B组 凑算式(c++字典序枚举)

时间:2022-09-10 08:52:49

凑算式

     B      DEF
A + --- + ------- = 10
     C      GHI

    
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。

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

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

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

#include <iostream>#include <algorithm>
#include <cmath>
#define a n[0]
#define b n[1]
#define c n[2]
#define def (n[3]*100+n[4]*10+n[5])
#define ghi (n[6]*100+n[7]*10+n[8])
#define ANS (a+b/c+def/ghi)
using namespace std;

int main(){
double n[]={1,2,3,4,5,6,7,8,9};
long long sum=0;
do{
if( fabs( ANS-10 )<1e-5){
sum++;
}
}while(next_permutation(n,n+9));
cout<<sum<<endl;
        return 0;
}

看到网上一些大神手打9个循环来枚举的实在是佩服.

关于精度问题,double肯定是足够了.