/* http://www.mrwadlo.com */ #include #include char pos[9] = { '1','1','1','1','1','1','1','1','1' }; int sol[6]; char signs[12]; void displayer(); int checkers(); int main() { int i; unsigned long j = 0; int complete = 0; clrscr(); printf("\n"); /* 2147483647 */ for ( i=1 ; i<7 ; i++ ) { printf(" Enter %d Answer: ",i); scanf("%d",&sol[i-1]); if ( sol[i-1] > 504 || sol[i-1] < -71 ) { printf(" -71 < Number < 504\n"); i--; } } printf("\n"); for ( i=1 ; i<13 ; i++ ) { printf(" Enter %d Sign: ",i); do{ signs[i-1] = getch(); } while ( signs[i-1] != '+' && signs[i-1] != '-' && signs[i-1] != '*' && signs[i-1] != '/' ); printf("%c\n",signs[i-1]); } do { pos[0]++; i = 0; while ( pos[i] == 58 && i<9 ) { pos[i] = 49; pos[i+1]++; i++; } if (checkers()) complete = 1; if ( j>387420489 ) { complete = 2; } else { j++; if ( j%1000000 == 0 ) { displayer(); gotoxy(31,2); printf("Combinations Attempted: %ld", j ); gotoxy(40,3); printf("Unprobability: %.0f%%", 1.0F * j / 387420489 * 100 ); } } } while ( complete != 1 && complete != 2 ); gotoxy(31,2); printf(" "); gotoxy(40,3); printf(" "); if ( complete == 1 ) { gotoxy(41,3); printf("Combination found."); displayer(); } else { gotoxy(37,3); printf("Combination not possible."); } gotoxy(39,15); printf("Press Any Key to Exit"); getch(); return 0; } void displayer() { gotoxy(43,6); printf("%c %c %c %c %c = %d",pos[0],signs[0],pos[1],signs[1],pos[2],sol[0]); gotoxy(43,7); printf("%c %c %c",signs[2],signs[3],signs[4]); gotoxy(43,8); printf("%c %c %c %c %c = %d",pos[3],signs[5],pos[4],signs[6],pos[5],sol[1]); gotoxy(43,9); printf("%c %c %c",signs[7],signs[8],signs[9]); gotoxy(43,10); printf("%c %c %c %c %c = %d",pos[6],signs[10],pos[7],signs[11],pos[8],sol[2]); gotoxy(43,11); printf("= = ="); gotoxy(43,12); printf("%d",sol[5]); gotoxy(47,12); printf("%d",sol[4]); gotoxy(51,12); printf("%d",sol[3]); } int checkers() { int i,j; for ( i=0 ; i<9 ; i++ ) { for ( j=i+1 ; j<9 ; j++ ) if ( pos[i] == pos[j] ) return 0; } for ( i=0 ; i<3 ; i++ ) { if ( signs[i*5] == '+' ) { if ( signs[i*5+1] == '+' ) if ( (pos[i*3] - 48) + (pos[i*3+1] - 48) + (pos[i*3+2] - 48) != sol[i]) return 0; else if ( signs[i*5+1] == '-' ) if ( (pos[i*3] - 48) + (pos[i*3+1] - 48) - (pos[i*3+2] - 48) != sol[i]) return 0; else if ( signs[i*5+1] == '*' ) if ( (pos[i*3] - 48) + ((pos[i*3+1] - 48) * (pos[i*3+2] - 48)) != sol[i]) return 0; else if ( signs[i*5+1] == '/' ) if ( (pos[i*3] - 48) + ((pos[i*3+1] - 48) / (pos[i*3+2] - 48)) != sol[i]) return 0; } else if ( signs[i*5] == '-' ) { if ( signs[i*5+1] == '+' ) if ( (pos[i*3] - 48) - (pos[i*3+1] - 48) + (pos[i*3+2] - 48) != sol[i]) return 0; else if ( signs[i*5+1] == '-' ) if ( (pos[i*3] - 48) - (pos[i*3+1] - 48) - (pos[i*3+2] - 48) != sol[i]) return 0; else if ( signs[i*5+1] == '*' ) if ( (pos[i*3] - 48) - ((pos[i*3+1] - 48) * (pos[i*3+2] - 48)) != sol[i]) return 0; else if ( signs[i*5+1] == '/' ) if ( (pos[i*3] - 48) - ((pos[i*3+1] - 48) / (pos[i*3+2] - 48)) != sol[i]) return 0; } else if ( signs[i*5] == '*' ) { if ( signs[i*5+1] == '+' ) if ( ((pos[i*3] - 48) * (pos[i*3+1] - 48)) + (pos[i*3+2] - 48) != sol[i]) return 0; else if ( signs[i*5+1] == '-' ) if ( ((pos[i*3] - 48) * (pos[i*3+1] - 48)) - (pos[i*3+2] - 48) != sol[i]) return 0; else if ( signs[i*5+1] == '*' ) if ( (pos[i*3] - 48) * (pos[i*3+1] - 48) * (pos[i*3+2] - 48) != sol[i]) return 0; else if ( signs[i*5+1] == '/' ) if ( (pos[i*3] - 48) * (pos[i*3+1] - 48) / (pos[i*3+2] - 48) != sol[i]) return 0; } else if ( signs[i*5] == '/' ) { if ( signs[i*5+1] == '+' ) if ( ((pos[i*3] - 48) / (pos[i*3+1] - 48)) + (pos[i*3+2] - 48) != sol[i]) return 0; else if ( signs[i*5+1] == '-' ) if ( ((pos[i*3] - 48) / (pos[i*3+1] - 48)) - (pos[i*3+2] - 48) != sol[i]) return 0; else if ( signs[i*5+1] == '*' ) if ( (pos[i*3] - 48) / (pos[i*3+1] - 48) * (pos[i*3+2] - 48) != sol[i]) return 0; else if ( signs[i*5+1] == '/' ) if ( (pos[i*3] - 48) / (pos[i*3+1] - 48) / (pos[i*3+2] - 48) != sol[i]) return 0; } } for ( i=0 ; i<3 ; i++ ) { if ( signs[i+2] == '+' ) { if ( signs[i+7] == '+' ) { if ( (pos[i] - 48) + (pos[i+3] - 48) + (pos[i+6] - 48) != sol[5-i]) return 0; } else if ( signs[i+7] == '-' ) { if ( (pos[i] - 48) + (pos[i+3] - 48) - (pos[i+6] - 48) != sol[5-i]) return 0; } else if ( signs[i+7] == '*' ) { if ( (pos[i] - 48) + ((pos[i+3] - 48) * (pos[i+6] - 48)) != sol[5-i]) return 0; } else if ( signs[i+7] == '/' ) { if ( (pos[i] - 48) + ((pos[i+3] - 48) / (pos[i+6] - 48)) != sol[5-i]) return 0; } } else if ( signs[i+2] == '-' ) { if ( signs[i+7] == '+' ) { if ( (pos[i] - 48) - (pos[i+3] - 48) + (pos[i+6] - 48) != sol[5-i]) return 0; } else if ( signs[i+7] == '-' ) { if ( (pos[i] - 48) - (pos[i+3] - 48) - (pos[i+6] - 48) != sol[5-i]) return 0; } else if ( signs[i+7] == '*' ) { if ( (pos[i] - 48) - ((pos[i+3] - 48) * (pos[i+6] - 48)) != sol[5-i]) return 0; } else if ( signs[i+7] == '/' ) { if ( (pos[i] - 48) - ((pos[i+3] - 48) / (pos[i+6] - 48)) != sol[5-i]) return 0; } } else if ( signs[i+2] == '*' ) { if ( signs[i+7] == '+' ) { if ( ((pos[i] - 48) * (pos[i+3] - 48)) + (pos[i+6] - 48) != sol[5-i]) return 0; } else if ( signs[i+7] == '-' ) { if ( ((pos[i] - 48) * (pos[i+3] - 48)) - (pos[i+6] - 48) != sol[5-i]) return 0; } else if ( signs[i+7] == '*' ) { if ( (pos[i] - 48) * (pos[i+3] - 48) * (pos[i+6] - 48) != sol[5-i]) return 0; } else if ( signs[i+7] == '/' ) { if ( (pos[i] - 48) * (pos[i+3] - 48) / (pos[i+6] - 48) != sol[5-i]) { return 0; } } } else if ( signs[i+2] == '/' ) { if ( signs[i+7] == '+' ) { if ( ((pos[i] - 48) / (pos[i+3] - 48)) + (pos[i+6] - 48) != sol[5-i]) return 0; } else if ( signs[i+7] == '-' ) { if ( ((pos[i] - 48) / (pos[i+3] - 48)) - (pos[i+6] - 48) != sol[5-i]) return 0; } else if ( signs[i+7] == '*' ) { if ( (pos[i] - 48) / (pos[i+3] - 48) * (pos[i+6] - 48) != sol[5-i]) return 0; } else if ( signs[i+7] == '/' ) { if ( (pos[i] - 48) / (pos[i+3] - 48) / (pos[i+6] - 48) != sol[5-i]) return 0; } } } return 1; }