func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxN = 1000100;   const int Num = 999999;   const int Mod = 1e9 + 7;   int n;   int Sm1[maxN], Sm2[maxN], Sm3[maxN];   void Plus(int &x, int y);   void Minus(int &x, int y);   int QPow(int x, int cnt);   int main() {     scanf( %d , &n);     for (int i = 1; i <= n; i++) {       int x;       scanf( %d , &x);       ++Sm3[x];     }     for (int i = 0; i <= Num; i++)       Sm1[i] = 1ll * Sm3[i] * i % Mod, Sm2[i] = 1ll * Sm3[i] * i % Mod * i % Mod;     for (int k = 8; k >= 0; k--)       for (int i = 0, mul = 1; i <= 5; i++, mul = mul * 10)         for (int j = 0; j <= Num; j++)           if (j / mul % 10 == k)             Plus(Sm1[j], Sm1[j + mul]), Plus(Sm2[j], Sm2[j + mul]),                 Plus(Sm3[j], Sm3[j + mul]);     int inv2 = QPow(2, Mod - 2);     for (int i = 0; i <= Num; i++) {       if (!Sm3[i]) continue;       int pw = QPow(2, Sm3[i] - 1);       int k = (1ll * Sm1[i] * Sm1[i] % Mod + Sm2[i]) % Mod;       Sm1[i] = 1ll * k * pw % Mod * inv2 % Mod;     }     for (int k = 0; k <= 8; k++)       for (int i = 0, mul = 1; i <= 5; i++, mul = mul * 10)         for (int j = 0; j <= Num; j++)           if (j / mul % 10 == k) Minus(Sm1[j], Sm1[j + mul]);     long long Ans = 0;     for (int i = 0; i <= Num; i++) Ans = Ans ^ (1ll * Sm1[i] * i);     printf( %I64d n , Ans);     return 0;   }   void Plus(int &x, int y) {     x += y;     if (x >= Mod) x -= Mod;     return;   }   void Minus(int &x, int y) {     x -= y;     if (x < 0) x += Mod;     return;   }   int QPow(int x, int cnt) {     int ret = 1;     while (cnt) {       if (cnt & 1) ret = 1ll * ret * x % Mod;       x = 1ll * x * x % Mod;       cnt >>= 1;     }     return ret;   }   