fork download
  1. #include<bits/stdc++.h>
  2. #define f1(i, n) for(ll i=1;i<=n;++i)
  3. #define f0(i, n) for(ll i=0;i<n;++i)
  4. #define ull unsigned long long
  5. #define ll long long
  6. #define rev(a) reverse(a.begin(),a.end())
  7. #define all(x) x.begin(),x.end()
  8. #define so(A, n) sort(A+1, A+n+1)
  9. using namespace std;
  10. const int maxn = 200010;
  11. const int N = 1e6 + 1;
  12.  
  13. void solve2() {
  14. ll n, k;
  15. cin >> n >> k;
  16. ll A[n + 1];
  17. f1(i, n) cin >> A[i];
  18. ll left = 1, right = LLONG_MAX - 1, res = 0;
  19. while (left <= right) {
  20. ll mid = (left + right) / 2, cnt = 0;
  21. for (int i = 1; i <= n; ++i) {
  22. cnt += A[i] / mid;
  23. }
  24. if (cnt >= k) {
  25. res = max(res, mid);
  26. left = mid + 1;
  27. }
  28. else {
  29. right = mid - 1;
  30. }
  31. }
  32. cout << res;
  33. }
  34. ll convert(string s) {
  35. ll sum = 0;
  36. int last = 0;
  37. for (int i = 1; i < s.size(); ++i) {if (s[i] == '+' || s[i] == '-') {last = i; break;} sum = sum * 10 + s[i] - 48;}
  38. if (s[0] != '-') sum += (s[0] - 48) * pow(10, last - 1);
  39. else sum *= -1;
  40. for (int i = last; i < s.size(); ++i) {
  41. if (s[i] == '+' || s[i] == '-') {
  42. int num = 0;
  43. for (int j = i + 1; j < s.size(); ++j) {
  44. if (s[j] == '+' || s[j] == '-') break;
  45. num = num * 10 + (s[j] - 48);
  46. }
  47. if (s[i] == '+') sum += num;
  48. else sum -= num;
  49. }
  50. }
  51. return sum;
  52. }
  53. void solve3() {
  54. string s;
  55. int m;
  56. cin >> s >> m;
  57. int n = pow(3, s.size()) - 1;
  58. int v[s.size() + 2];
  59. vector<string> xau;
  60. int res = 0;
  61. for (int i = 0; i <= n; ++i) {
  62. for (int j = 0; j < s.size(); ++j) v[j] = 0;
  63. int a = i, d = 0;
  64. while (a != 0) {
  65. v[d] = a % 3;
  66. a /= 3;
  67. ++d;
  68. }
  69. string motcaigiday = s;
  70. int cnt = 0;
  71. for (int j = 0; j < s.size(); ++j) {
  72. if (v[j] == 1) {
  73. motcaigiday.insert(motcaigiday.begin() + j + cnt, '+');
  74. ++cnt;
  75. }
  76. else if (v[j] == 2) {
  77. motcaigiday.insert(motcaigiday.begin() + j + cnt, '-');
  78. ++cnt;
  79. }
  80. }
  81. if (motcaigiday[0] == '+') continue;
  82. if (convert(motcaigiday) == m) {
  83. res++;
  84. xau.push_back(motcaigiday);
  85. }
  86. }
  87. cout << res << "\n";
  88. f0(i, xau.size()) cout << xau[i] << "\n";
  89. }
  90. int main()
  91. {
  92. ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  93.  
  94. // freopen("pay.inp","r",stdin);
  95. // freopen("pay.out","w",stdout);
  96. solve3();
  97.  
  98.  
  99. return 0;
  100. }
  101.  
  102.  
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
0