输入一个210之间的正整数,假设输入值为10,则在4个10即如下: 10 10 10 10 之间或之前,任意插入数学运算符:+(加) 、 -(减) 、 *(乘) 、 /(除)、-(负号)、!(阶乘)、√(开平方,即平方根)使得整个式子的值为110。即:假设输入的值为10,则:
10 10 10 10 = 1
10 10 10 10 = 2
10 10 10 10 = 3
10 10 10 10 = 4
10 10 10 10 = 5
10 10 10 10 = 6
10 10 10 10 = 7
10 10 10 10 = 8
10 10 10 10 = 9
10 10 10 10 = 10 只要每一个式子给出一个式子即可。若不存在,则输出该式子无法给成。
2~10之间的数运算结果仍在2~10
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
CSDN专家-深度学习进阶 2021-09-12 19:18关注给你写了个:
#include<stdio.h> #include<stdlib.h> #include<time.h> #include<conio.h> char op[5] = { '#', '+', '-', '*', '/', }; int n; float cal(float x, float y, int op) { switch (op) //将运算符初始化为1,2,3,4四个数字 { case 1:return x + y; case 2:return x - y; case 3:return x*y; case 4:return x / y; } } //对应表达式((AoB)oC)oD float m1(float i, float j, float k, float t, int op1, int op2, int op3) { float r1, r2, r3; r1 = cal(i, j, op1); r2 = cal(r1, k, op2); r3 = cal(r2, t, op3); return r3; } //对应表达式(Ao(BoC))oD float m2(float i, float j, float k, float t, int op1, int op2, int op3) { float r1, r2, r3; r1 = cal(j, k, op2); r2 = cal(i, r1, op1); r3 = cal(r2, t, op3); return r3; } //对应表达式Ao(Bo(CoD)) float m3(float i, float j, float k, float t, int op1, int op2, int op3) { float r1, r2, r3; r1 = cal(k, t, op3); r2 = cal(j, r1, op2); r3 = cal(i, r2, op1); return r3; } //对应表达式Ao((BoC)oD) float m4(float i, float j, float k, float t, int op1, int op2, int op3) { float r1, r2, r3; r1 = cal(j, k, op2); r2 = cal(r1, t, op3); r3 = cal(i, r2, op1); return r3; } //对应表达式(AoB)o(CoD) float m5(float i, float j, float k, float t, int op1, int op2, int op3) { float r1, r2, r3; r1 = cal(i, j, op1); r2 = cal(k, t, op3); r3 = cal(r1, r2, op2); return r3; } int get(int i, int j, int k, int t,int n) { int op1, op2, op3; int flag = 0; for (op1 = 1; op1 <= 4; op1++){ //通过一个三重循坏列举了符号的变化情况 for (op2 = 1; op2 <= 4; op2++){ for (op3 = 1; op3 <= 4; op3++){ if (m1(i, j, k, t, op1, op2, op3) == n) { printf("((%d%c%d)%c%d)%c%d=%d\n", i, op[op1], j, op[op2], k, op[op3], t,n); flag = 1; break; } if (m2(i, j, k, t, op1, op2, op3) == n) { printf("(%d%c(%d%c%d))%c%d=%d\n", i, op[op1], j, op[op2], k, op[op3], t,n); flag = 1; break; } if (m3(i, j, k, t, op1, op2, op3) == n) { printf("%d%c(%d%c(%d%c%d))=%d\n", i, op[op1], j, op[op2], k, op[op3], t,n); flag = 1; break; } if (m4(i, j, k, t, op1, op2, op3) == n) { printf("%d%c((%d%c%d)%c%d)=%d\n", i, op[op1], j, op[op2], k, op[op3], t,n); flag = 1; break; } if (m5(i, j, k, t, op1, op2, op3) == n) { printf("(%d%c%d)%c(%d%c%d)=%d\n", i, op[op1], j, op[op2], k, op[op3], t,n); flag = 1; break; } } if(flag) break; } if(flag) break; } return flag; } int main() { int i, j, k, t,x; scanf("%d",&n); i =j=k=t=n; for(x=1;x<=n;x++){ get(i, j, k, t,x); } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 1