Chiamiamo l'età attuale di Andrea A e quella di Marco M.
Il primo fatto è che Andrea ha l'età che Marco avrà quando Andrea avrà il doppio dell'età che Marco aveva quando Andrea aveva metà della somma delle loro età attuali.
Quando Andrea aveva metà della somma delle loro età attuali aveva (A+M)/2 anni. Questo succedeva A-((A+M)/2) = A/2 - M/2 anni fa. In quel momento Marco aveva M - (A/2 - M/2) = 3/2 M - A/2 anni. Se Andrea ha il doppio dell'età di Marco in quel momento, allora ha (3/2 M - A/2) * 2 = 3M - A anni. Questo succederà tra 3M - 2A anni. Allora Marco avrà M + 3M - 2A = 4M - 2A anni. E questa è esattamente l'età attuale di Andrea, per cui A = 4M - 2A, da cui 3A = 4M.
Il secondo fatto è che Marco ha l'età che aveva Andrea quando Marco aveva metà degli anni che avrà fra dieci anni.
Quando Marco aveva metà dell'età che avrà tra dieci anni, aveva (M+10)/2 anni. Questo succedeva M - ((M+10)/2) = M/2 - 5 anni fa. In quel momento Andrea aveva A - (M/2 - 5) anni. In base al secondo fatto, Marco ha adesso l'età che Andrea aveva allora, per cui M = A - (M/2 - 5). Ne segue che 3M/2 = A + 5.
Riassumendo, abbiamo due equazioni:
3A = 4M
A+5 = 3M/2
Dalla prima equazione otteniamo A = 4M/3.
Sostituendo nella seconda e semplificando otteniamo via via
4M/3 + 5 = 3M/2
5=3M/2 - 4M/3
5=(9-8)M/6=M/6
cioè M=30, da cui segue che A=40.
Quindi Marco ha 30 anni e Andrea 40.