fork(10) download
  1. #include <iostream>
  2. #include <string>
  3. #include <unordered_map>
  4. using namespace std;
  5.  
  6. const int DIGIT = 14;
  7. int a[DIGIT][10];
  8.  
  9. unordered_map<int, long long> dp[DIGIT];
  10.  
  11. long long pow10[DIGIT];
  12.  
  13. long long dfs(int index, int z) {
  14. if (index == DIGIT) {
  15. if (z == 0) {
  16. return 0;
  17. }
  18. return -1;
  19. }
  20. // read Cache
  21. if (dp[index].count(z)) {
  22. return dp[index][z];
  23. }
  24. dp[index][z] = -1;
  25. for (int w = 1; w < 10; w++) {
  26. // mui x 0
  27. // add x z
  28. int newx = z;
  29. if (newx < 0 || a[index][1] <= 0) {
  30. continue;
  31. }
  32. // mod x 26
  33. newx %= a[index][1];
  34. if (a[index][2] == 0) {
  35. continue;
  36. }
  37. // div z 1
  38. int newz = z / a[index][2];
  39. // add x 12
  40. newx += a[index][3];
  41. // eql x w
  42. newx = newx == w ? 1 : 0;
  43. // eql x 0
  44. newx = newx == a[index][4] ? 1 : 0;
  45. // mul y 0
  46. // add y 25
  47. int newy = a[index][6];
  48. // mul y x
  49. newy *= newx;
  50. // add y 1
  51. newy += a[index][7];
  52. // mul z y
  53. newz *= newy;
  54. // mul y 0
  55. newy *= a[index][8];
  56. // add y w
  57. newy += w;
  58. // add y 4
  59. newy += a[index][9];
  60. // mul y x
  61. newy *= newx;
  62. // add y z
  63. newz += newy;
  64. long long tmp = dfs(index + 1, newz);
  65. if (tmp == -1) {
  66. continue;
  67. }
  68. dp[index][z] = tmp + w * pow10[DIGIT - 1 - index];
  69. return dp[index][z];
  70. }
  71. return dp[index][z];
  72. }
  73.  
  74. int main() {
  75. pow10[0] = 1;
  76. for (int i = 1; i < DIGIT; i++) {
  77. pow10[i] = pow10[i - 1] * 10;
  78. }
  79. string s;
  80. for (int i = 0; i < DIGIT; i++) {
  81. // inp w
  82. getline(cin, s);
  83. // mul x 0
  84. cin >> s >> s >> a[i][0] >> ws;
  85. // add x z
  86. getline(cin, s);
  87. // mod x 26
  88. cin >> s >> s >> a[i][1] >> ws;
  89. // div z 1
  90. cin >> s >> s >> a[i][2] >> ws;
  91. // add x 12
  92. cin >> s >> s >> a[i][3] >> ws;
  93. // eql x w
  94. getline(cin, s);
  95. // eql x 0
  96. cin >> s >> s >> a[i][4] >> ws;
  97. // mul y 0
  98. cin >> s >> s >> a[i][5] >> ws;
  99. // add y 25
  100. cin >> s >> s >> a[i][6] >> ws;
  101. // mul y x
  102. getline(cin, s);
  103. // add y 1
  104. cin >> s >> s >> a[i][7] >> ws;
  105. // mul z y
  106. getline(cin, s);
  107. // mul y 0
  108. cin >> s >> s >> a[i][8] >> ws;
  109. // add y w
  110. getline(cin, s);
  111. // add y 4
  112. cin >> s >> s >> a[i][9] >> ws;
  113. // mul y x
  114. getline(cin, s);
  115. // add z y
  116. getline(cin, s);
  117. }
  118. cout << dfs(0, 0) << endl;
  119. }
  120.  
Success #stdin #stdout 4.86s 361196KB
stdin
inp w
mul x 0
add x z
mod x 26
div z 1
add x 12
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 4
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 1
add x 11
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 10
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 1
add x 14
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 12
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 26
add x -6
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 14
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 1
add x 15
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 6
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 1
add x 12
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 16
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 26
add x -9
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 1
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 1
add x 14
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 7
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 1
add x 14
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 8
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 26
add x -5
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 11
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 26
add x -9
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 8
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 26
add x -5
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 3
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 26
add x -2
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 1
mul y x
add z y
inp w
mul x 0
add x z
mod x 26
div z 26
add x -7
eql x w
eql x 0
mul y 0
add y 25
mul y x
add y 1
mul z y
mul y 0
add y w
add y 8
mul y x
add z y
stdout
41171183141291