输入一个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
悬赏问题
- ¥15 Vue3 大型图片数据拖动排序
- ¥15 划分vlan后不通了
- ¥15 GDI处理通道视频时总是带有白色锯齿
- ¥20 用雷电模拟器安装百达屋apk一直闪退
- ¥15 算能科技20240506咨询(拒绝大模型回答)
- ¥15 自适应 AR 模型 参数估计Matlab程序
- ¥100 角动量包络面如何用MATLAB绘制
- ¥15 merge函数占用内存过大
- ¥15 使用EMD去噪处理RML2016数据集时候的原理
- ¥15 神经网络预测均方误差很小 但是图像上看着差别太大