fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int num[5];
  5.  
  6. bool backtrack(int pos,long long value){
  7. if(pos==5 and value==23) return true;
  8. if(pos==5) return false;
  9. bool lol=false;
  10. for(int i=0;i<3;i++){
  11. if(i==0) lol=lol or backtrack(pos+1,value+num[pos]);
  12. if(i==1) lol=lol or backtrack(pos+1,value-num[pos]);
  13. if(i==2) lol=lol or backtrack(pos+1,value*num[pos]);
  14. }
  15. return lol;
  16. }
  17.  
  18. int main() {
  19. while(true){
  20. int lol=0;
  21. for(int i=0;i<5;i++){
  22. cin>>num[i];
  23. lol+=num[i];
  24. }
  25. if(lol==0) break;
  26. if(backtrack(1,num[0])) puts("Possible");
  27. else puts("Impossible");
  28. }
  29. }
Success #stdin #stdout 0s 4536KB
stdin
1 1 1 1 1 
1 2 3 4 5 
2 3 5 7 11 
0 0 0 0 0
stdout
Impossible
Impossible
Impossible