#include using namespace std; int encode(int X1, int X2, int Y1, int Y2) { return ((X1 * 11 + X2) * 11 + Y1) * 11 + Y2; } int f[100005]; void solve(int X1, int X2, int Y1, int Y2) { if (X1 == 0 || X2 == 0) {f[encode(X1, X2, Y1, Y2)] = 1; return ;} if (Y1 == 0 || Y2 == 0) {f[encode(X1, X2, Y1, Y2)] = 0; return ;} int tr[6] = { encode(Y1, Y2, (X1 + X2) % 10, X2), encode(Y1, Y2, (X1 + Y1) % 10, X2), encode(Y1, Y2, (X1 + Y2) % 10, X2), encode(Y1, Y2, X1, (X1 + X2) % 10), encode(Y1, Y2, X1, (Y1 + X2) % 10), encode(Y1, Y2, X1, (Y2 + X2) % 10), }; int flag = 0; for (int i = 0; i < 6; i++) { if (f[tr[i]] == 0) {f[encode(X1, X2, Y1, Y2)] = 1; return ;} if (f[tr[i]] == -1) flag = 1; } if (!flag) f[encode(X1, X2, Y1, Y2)] = 0; } int main() { memset(f, -1, sizeof f); for (int T = 0; T <= 8; T++) for (int X1 = 0; X1 <= 9; X1++) for (int X2 = 0; X2 <= 9; X2++) for (int Y1 = 0; Y1 <= 9; Y1++) for (int Y2 = 0; Y2 <= 9; Y2++) solve(X1, X2, Y1, Y2); /* int wacnt = 0; for (int X1 = 0; X1 <= 9; X1++) for (int X2 = 0; X2 <= 9; X2++) for (int Y1 = 0; Y1 <= 9; Y1++) for (int Y2 = 0; Y2 <= 9; Y2++) if (f[encode(X1, X2, Y1, Y2)] == -1) wacnt++; cout <