#include #include #include int GCD(int a, int b) { if (b == 0) return a; return GCD(b, a % b); } int LCM(int gcd, int b[], int n) { int total = 1; for (int k = 0; k < n; k++) total *= b[k]; return total/gcd; } int evaluate(int a[], int b[], int n) { int c = 1; for (int k = 0; k < n; k++) c *= b[k]; int gcd = 0; for (int k = 0; k < n; k++) gcd = GCD(gcd, b[k]); for (int k = 0; k < n; k++) { if ((a[k] % 2 == 1) && (b[k] % 2 == 0)) { for (int j = k + 1; j < n; j++) if ((a[j] % 2 == 0) && (b[j] % 2 == 0)) return -1; } } int lcm = LCM(gcd, b, n); for (int k = 0; k < lcm; k++) { int j; for (j = 0; j < n; j++) if (k % b[j] != a[j]) break; if (j==n) { printf("Solution of the given equations is x=%d(mod %d)", k, c); return 0; } } return -1; } int main() { int n = 4; int n1 = 123684; int n2 = 413456; int b[] = {99,98,97,95}; int a[n]; for(int i=0;i<4;i++) { a[i] = (n1%b[i]+n2%b[i])%b[i]; } int ret = evaluate(a, b, n); if (ret == -1) printf("The given equation has no solution."); getch(); return 0; }