1103 计算等式
1103 计算等式
题目描述
编程在算式123_45_67_8_9=N的下划线部分填上加号(+)或减号(-),使该等式成立。要求程序运行时输出该等式。(保证数据存在满足的等式)
输入要求
输入一个整数N。
比如 100
输出要求
输出满足条件的等式。若不存在满足的等式,则输出"impossible"(输出不包括引号)
比如 123+45-67+8-9=100
AC代码
暴力枚举就可以了
#include <bits/stdc++.h>
using namespace std;
int f=0,n;
char ch[4];
int num[4]={45,67,8,9};
void dfs(int x,int sum)
{
if(f) return ; //减支
if(x==4)
{
if(sum==n)
{
f=1;
printf("123%c45%c67%c8%c9=%d\n",ch[0],ch[1],ch[2],ch[3],n);
}
return ;
}
ch[x] ='+';
dfs(x+1,sum+num[x]); //加法
ch[x] ='-';
dfs(x+1,sum-num[x]); //减法
}
int main()
{
cin>>n;
dfs(0,123);
if(!f) cout<<"impossible"<<endl;
return 0;
}