Untitled

From dfasdfasdf, 5 Years ago, written in Plain Text, viewed 323 times.
URL https://code.nat.moe/view/4ae5a3be Embed
Download Paste or View Raw
  1. #include <iostream>
  2. #include <string>
  3. #include <cstdlib>
  4. #include <set>
  5. #include <vector>
  6.  
  7. using namespace std;
  8.  
  9. struct Status {
  10.         int a[4], b[4], d[4];
  11.     int idx;
  12.     int carry;
  13.     int result;
  14. };
  15.  
  16. int solve(const Status& s) {
  17.     int idx = s.idx;
  18.     int *a = s.a; int *b = s.b; int *d = s.d;
  19.     int carry = s.carry;
  20.    
  21.     if (idx == 3) {
  22.         return a[idx] + b[idx] + carry == d[idx] ? s.result : 0;
  23.     }
  24.    
  25.     if (a[idx] == -1 && b[idx] == -1) {
  26.         int res = 0;
  27.         { // Non-carry sub branch
  28.             Status s2 = s;
  29.             s2.result *= d[idx] + 1 - carry;
  30.             s2.carry = 0;
  31.             s2.idx += 1;
  32.             res += solve(s2);
  33.         }
  34.         { // Carry sub branch
  35.             Status s2 = s;
  36.             s2.result *= 9 - d[idx] - carry;
  37.             if (s2.result < 0) s2.result = 0;
  38.             s2.carry = 1;
  39.             s2.idx += 1;
  40.             res += solve(s2);
  41.         }
  42.         return res;
  43.     } else if (a[idx] == -1) {
  44.         int a1 = d[idx] + carry - b[idx];
  45.         int cc = 0;
  46.         if (a1 < 0) {
  47.             a1 += 10;
  48.             cc = 1;
  49.         }
  50.        
  51.         Status s2 = s;
  52.         s2.idx += 1;
  53.         s2.result *= 1;
  54.         s2.carry = cc;
  55.         return solve(s2);
  56.     } else if (b[idx] == -1) {
  57.         int b1 = d[idx] - a[idx];
  58.         int cc = 0;
  59.         if (b1 < 0) {
  60.             b1 += 10;
  61.             cc = 1;
  62.         }
  63.        
  64.         Status s2 = s;
  65.         s2.idx += 1;
  66.         s2.result *= 1;
  67.         s2.carry = cc;
  68.         return solve(s2);
  69.     }
  70. }
  71.  
  72. int main() {
  73. }

Reply to "Untitled"

Here you can reply to the paste above

captcha