fork download
  1. #pragma GCC optimize("Ofast")
  2. #pragma GCC optimize("O2")
  3. #include<bits/stdc++.h>
  4. #define faster ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  5. #define db double
  6. #define bo bool
  7. #define vo void
  8. #define ch char
  9. #define fl float
  10. #define ll long long
  11. #define str string
  12. #define st struct
  13. #define re return
  14. using namespace std;
  15. str s;
  16. ll m;
  17. vector<str> res;
  18. vo dq(ll p,ll c,str s2)
  19. {
  20. ll n,i;
  21. if(p==s.size())
  22. {
  23. if(c==m) res.push_back(s2);
  24. re;
  25. }
  26. for(i=p;i<s.size();i++)
  27. {
  28. str s1=s.substr(p,i-p+1);
  29. if(s1.size()>1&&s1[0]=='0') break;
  30. ll n=stoll(s1);
  31. if(p==0)
  32. {
  33. dq(i+1,n,s1);
  34. dq(i+1,-n,"-"+s1);
  35. }
  36. else
  37. {
  38. dq(i+1,c+n,s2+"+"+s1);
  39. dq(i+1,c-n,s2+"-"+s1);
  40. }
  41. }
  42. }
  43. int main()
  44. {
  45. faster
  46. cin>>s>>m;
  47. dq(0,0,"");
  48. if(res.empty()) cout<<0;
  49. else
  50. {
  51. cout<<res.size()<<"\n";
  52. for(auto &x : res) cout<<x<<"\n";
  53. }
  54. re 0;
  55. }
  56.  
Success #stdin #stdout 0.01s 5288KB
stdin
123456789
185
stdout
5
1-2+34+56+7+89
1+234-56+7+8-9
-1+234-56+7-8+9
123+4-5-6+78-9
123-4+56-7+8+9