func_code_string: #include <bits/stdc++.h>   using namespace std;   const int dx[] = {0, 1, 0, -1};   const int dy[] = {1, 0, -1, 0};   inline int read() {     int x = 0, f = 1;     char ch = getchar();     while (ch <  0  || ch >  9 ) {       if (ch ==  - ) f = -1;       ch = getchar();     }     while (ch >=  0  && ch <=  9 ) {       x = x * 10 + ch -  0 ;       ch = getchar();     }     return x * f;   }   inline long long read1() {     long long x = 0, f = 1;     char ch = getchar();     while (ch <  0  || ch >  9 ) {       if (ch ==  - ) f = -1;       ch = getchar();     }     while (ch >=  0  && ch <=  9 ) {       x = x * 10 + ch -  0 ;       ch = getchar();     }     return x * f;   }   int ans;   long long w[20], ansa, ansb, ansc;   void dfs(long long a, long long b, long long c, long long nowa, long long nowb,            long long jin, int nowl, int wei) {     if (nowl >= ans) return;     if (!a && !b && !c && !jin) {       ans = nowl;       ansa = nowa;       ansb = nowb;       return;     }     if (!c) {       int tot = 0;       long long nw = jin + a + b;       while (nw) {         tot++;         nw /= 10;       }       dfs(0, 0, 0, nowa + a * w[wei], nowb + b * w[wei], 0, nowl + tot, wei);       return;     }     if ((a + b + jin) % 10 == c % 10)       dfs(a / 10, b / 10, c / 10, nowa + a % 10 * w[wei], nowb + b % 10 * w[wei],           (a % 10 + b % 10 + jin) / 10, nowl, wei + 1);     else {       dfs(a * 10 + (c + 10 - b % 10 - jin) % 10, b, c, nowa, nowb, jin, nowl + 1,           wei);       dfs(a, b * 10 + (c + 10 - a % 10 - jin) % 10, c, nowa, nowb, jin, nowl + 1,           wei);       dfs(a, b, c * 10 + (a + b + jin) % 10, nowa, nowb, jin, nowl + 1, wei);     }   }   int a, b, c;   int main() {     scanf( %d+%d=%d , &a, &b, &c);     w[0] = 1;     ans = 12;     for (int i = 1; i <= 18; i++) w[i] = w[i - 1] * 10;     dfs(a, b, c, 0, 0, 0, 0, 0);     printf( %I64d+%I64d=%I64d , ansa, ansb, ansa + ansb);     return 0;   }   