Écrire des fonctions x(a)
, y(a)
et z(a)
telles que pour tout rationnel a
toutes les fonctions renvoient des nombres rationnels et x(a)*y(a)*z(a)*(x(a) + y(a) + z(a)) == a
. Vous pouvez supposer un ≥ 0.
Vous n'avez pas besoin d'utiliser des types rationnels ou des opérations dans votre programme, tant que votre programme est mathématiquement solide. Par exemple, si vous utilisez une racine carrée dans votre réponse, vous devez montrer que son argument est toujours un carré d'un nombre rationnel.
Vous pouvez écrire trois fonctions nommées x, y, z ou écrire trois programmes à la place si les fonctions sont lourdes ou inexistantes pour votre langue. Alternativement, vous pouvez également écrire un seul programme / fonction qui renvoie trois nombres x, y, z. Enfin, si vous préférez, vous pouvez entrer / sortir les nombres rationnels comme une paire de numérateur / dénominateur. Votre score est la taille totale des trois fonctions ou trois programmes en octets. Le plus petit score l'emporte.
Le forçage brutal n'est pas autorisé. Pour tout a = p / q où p, q ≤ 1000, votre programme devrait s'exécuter en moins de 10 secondes.
Un exemple (cela ne signifie pas que votre décomposition doit donner ces chiffres):
x = 9408/43615
y = 12675/37576
z = 1342/390
x*y*z*(x+y+z) = 1
a
?