共有多少种等式

简介: 共有多少种等式

Q:共有多少种等式?

题目描述:

有如下式子:n 1 ? n 2 ? n 3 ? n 4 = n 5。其中,? ??代表四则运算(+,-,*,/)。对于给定的n 1 , n 2 , n 3 , n 4,请问存在多少种不同的运算符组合可以使得等式成立?例如当输入为1 2 3 4 5时,即表示求满足1 ? 2 ? 3 ? 4 = 5的运算符数,易得,有1 + 2 / 3 + 4 = 5与 1-2/3+4=5两种组合,即答案为2。


输入:

n 1 , n 2 , n 3 , n 4 , n 5 的值,此题有多组输入数据

输出:

满足条件的等式个数,每组数据一行。

样例输入:

1 2 3 4 5

5 4 2 3 1

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

样例输出:

2

4

20

4

4


测试输入:

2 3 4 5 6

7 8 9 10 11

3 4 5 6 7

8 9 1 1 1

2 3 6 4 9

1 2 1 2 1

2 1 1 2 3

5 6 1 2 1


测试输出:

4

0

2

5

2

10

7

4


Sample Code:


#include<stdio.h>
char ch[] = {'+', '-', '*', '/'};
char s[10];
int a[10], k[10];
int ans;
void dfs(int x) {
    if (x == 4) {
        for (int i = 1; i < 6; i++) {
            a[i] = k[i];
        }
        int res = 0, t[10];
        int cnt = 0;
        for (int i = 1; i < 4; i++) {
            if (s[i] == '*') {
                a[i + 1] *= a[i];
            } else if (s[i] == '/') {
                a[i + 1] = a[i] / a[i + 1];
            } else {
                t[cnt++] = a[i];
            }
        }
        t[cnt] = a[4];
        res += t[0];
        cnt = 0;
        for (int i = 1; i < 4; i++) {
            if (s[i] == '+') {
                res += t[++cnt];
            }
            if (s[i] == '-') {
                res -= t[++cnt];
            }
        }
        if (res == a[5]) {
            ans++;
        }
        return;
    }
    for (int i = 0; i < 4; i++) {
        s[x] = ch[i];
        dfs(x + 1);
    }
}
int main() {
    while (~scanf("%d%d%d%d%d", &k[1], &k[2], &k[3], &k[4], &k[5])) {
        ans = 0;
        dfs(1);
        printf("%d\n", ans);
    }
    return 0;
}
相关文章
|
存储 Java
数论——因子组合
数论——因子组合
|
5月前
leetcode-990:等式方程的可满足性
leetcode-990:等式方程的可满足性
42 0
|
5月前
|
机器学习/深度学习 Python
【代数学习题4.2】从零理解范数与迹 —— 求数域元素的范数与迹
【代数学习题4.2】从零理解范数与迹 —— 求数域元素的范数与迹
89 0
排列组合相关公式讲解(Anm,Cnm等)
排列组合相关公式讲解(Anm,Cnm等)
2954 0
排列组合相关公式讲解(Anm,Cnm等)
7-35 有理数均值 (20 分)
本题要求编写程序,计算N个有理数的平均值。
369 0
PTA7-88 找出不是两个数组共有的元素 (20分)
PTA7-88 找出不是两个数组共有的元素 (20分)
382 0
|
机器学习/深度学习 移动开发
【计算理论】可判定性 ( 对角线方法 | 证明自然数集 N 与实数集 R 不存在一一对应关系 )
【计算理论】可判定性 ( 对角线方法 | 证明自然数集 N 与实数集 R 不存在一一对应关系 )
331 0
|
机器学习/深度学习
【组合数学】递推方程 ( 非齐次部分是 指数函数 且 底是特征根 | 求特解示例 )
【组合数学】递推方程 ( 非齐次部分是 指数函数 且 底是特征根 | 求特解示例 )
154 0
【数理逻辑】谓词逻辑 ( 判断一阶谓词逻辑公式真假 | 解释 | 示例 | 谓词逻辑公式类型 | 永真式 | 永假式 | 可满足式 | 等值式 )
【数理逻辑】谓词逻辑 ( 判断一阶谓词逻辑公式真假 | 解释 | 示例 | 谓词逻辑公式类型 | 永真式 | 永假式 | 可满足式 | 等值式 )
448 0
|
机器学习/深度学习
【组合数学】递推方程 ( 特解形式 | 特解求法 | 特解示例 )
【组合数学】递推方程 ( 特解形式 | 特解求法 | 特解示例 )
277 0