速算24的变形版!数据量小,暴力枚举水过~~
糟践的代码~~
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cctype>
#include<cstdlib>
#include<algorithm>
#define ADD 0
#define SUB 1
#define MUL 2
using namespace std;
int permnum[5];
int num[5];
void Init()
{
for(int i = 0;i < 5;i++) permnum[i] = i;
for(int i = 0;i < 5;i++) scanf("%d",&num[i]);
}
int main()
{
freopen("in.txt","r",stdin);
while(true)
{
Init();
if(!(num[0]+num[1]+num[2]+num[3]+num[4])) break;
bool flag = false;
for(int i = 0;i < 3;i++)
for(int j = 0;j < 3;j++)
for(int k = 0;k < 3;k++)
for(int r = 0;r < 3;r++)
{
while(next_permutation(permnum,permnum+5))
{
int sum = num[permnum[0]];
if(i == ADD) sum += num[permnum[1]];
if(i == SUB) sum -= num[permnum[1]];
if(i == MUL) sum *= num[permnum[1]];
if(j == ADD) sum += num[permnum[2]];
if(j == SUB) sum -= num[permnum[2]];
if(j == MUL) sum *= num[permnum[2]];
if(k == ADD) sum += num[permnum[3]];
if(k == SUB) sum -= num[permnum[3]];
if(k == MUL) sum *= num[permnum[3]];
if(r == ADD) sum += num[permnum[4]];
if(r == SUB) sum -= num[permnum[4]];
if(r == MUL) sum *= num[permnum[4]];
if(sum == 23)
{
flag = true;
goto loop;
}
}
}
loop:;
printf("%s\n",flag?"Possible":"Impossible");
}
return 0;
}