You can also write a small program to solve this a bit more efficiently, by pre-computing all the divisors of 711000000 that are less than 711, and then only trying those options. Something like this would work: ``` ```

``````#include <stdio.h>

int main() {
unsigned int A, B, C, D;
unsigned int Aind, Bind, Cind;
unsigned int divs [61] =
{1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 30, 32, 36,
40, 45, 48, 50, 60, 64, 72, 75, 79, 80, 90, 96, 100, 120, 125, 144,
150, 158, 160, 180, 192, 200, 225, 237, 240, 250, 288, 300, 316, 320,
360, 375, 395, 400, 450, 474, 480, 500, 576, 600, 625, 632};
for(Aind=0, A=divs[0]; Aind<61; Aind++, A=divs[Aind])
for(Bind=0, B=divs[0]; A+B<=709 && Bind<=Aind; Bind++, B=divs[Bind])
for(Cind=0, C=divs[0]; A+B+C<=710 && Cind<=Bind; Cind++, C=divs[Cind]) {
D = 711 - (A+B+C);
if(D<=C) {
if(A*B*C*D == 711000000) {
printf("A: %u, B: %u, C:%u, D: %u\n", A, B, C, D);
}
}
}
return(1);
}
``````
``` ``` This approach finds the result in something like 350 inner loops. If you are interested in a non-brute-force method to solve this problem, you can take a look at the detailed solution in section 2.2 of this paper.