任务描述
本关任务:完美综合运算式
以下含乘方(a^b即为a的b次幂)、加、减、乘、除的综合运算式(1)的右边为一位的非负整数f,请把数字0,1,2,…,9这10个数字中不同于数字 f 的 9个数字不重复地填入式(1)左边的9个□中,(约定数字“1”、“0”不出现在(1)式左边的一位数中,且“0”不为首位),使得该综合运算式成立:
□^□+□□÷□-□□□×□=f (1)
满足上述要求的表达式(1)称为完美综合运算式。
输入非负整数f(0≤f≤9),输出相应的完美综合运算式。
编程要求
根据提示,在右侧编辑器补充代码,输出相应的完美综合运算式。
测试说明
平台会对你编写的代码进行测试:
测试输入:5;
预期输出:
1: 2^9+78/6-130*4=5
2: 9^3+64/2-108*7=5
测试输入:6;
预期输出:
1: 2^9+80/5-174*3=6
2: 5^4+18/9-207*3=6
3: 9^3+50/2-187*4=6
代码:
#include "bits/stdc++.h"
using namespace std;
int main()
{/********* Begin *********/int f;cin>>f;int cnt=0;vector<int> a;for (int i=0;i<=9;i++){if(i!=f){a.push_back(i);}}do{if (min({a[0],a[1],a[2],a[4],a[5],a[8]})==0) continue;if (a[0]==1 or a[1]==1 or a[4]==1 or a[8]==1) continue;if (pow(a[0],a[1])+(double)(a[2]*10+a[3])/(double)a[4]-(a[5]*100+a[6]*10+a[7])*a[8]==f){cout<<++cnt<<':';cout<<a[0]<<'^'<<a[1]<<'+'<<a[2]<<a[3]<<'/'<<a[4]<<'-'<<a[5]<<a[6]<<a[7]<<'*'<<a[8]<<'='<<f<<endl;}}while (next_permutation(a.begin(),a.begin()+9));/********* end *********/if(cnt==0) printf("No perfect expression.\n");return 0;
}