As an example of what I'm trying to achieve, I create a known function, say $(x + 4)^2 (x + 5)$, which expands out to $80 + 56 x + 13 x^2 + x^3$. I'd like to go backwards in this procedure, where I have a known polynomial and want to express it as a product of various functions to powers. My first thought was using `Solve` to solve everything to individual powers, unsuccessfully, since there is no system to solve for multiple parameters. Naturally, the solution might not be unique, but that's not particularly relevant for my process.

I am looking for a function that would look something like:

```
FindPowers[80 + 56 x + 13 x^2 + x^3 == (x+4)^a (x+5)^b (x+3)^c, {a,b,c}]

```

and return the following result:

```
{a->2, b->1, c->0}

```

This is obviously a simple example, but does MMA have any function that would almost "trial and error" combinations until it found a suitable solution? I do not need any particular solution, but just to know that a given polynomial may be expressed via specific predefined products. 

Please feel free to suggest amendments to the title, I am unsure what to call this method.

**EDIT: More complex example.**

In particular, my problem is not with standard polynomials in terms of $x$; as pointed out there are plenty of standard functions which can make this trivial. My particular problems are dealing with symbolic polynomial functions, such as 
`x[1] - x[2] - x[3] y[2] + x[4] y[2] - x[1] y[3] + x[2] y[3] - 
 x[1] z[3] + x[2] z[3] + x[1] y[2] z[3] - x[4] y[2] z[3] - 
 x[1] y[2] z[4] + x[3] y[2] z[4] + x[1] y[3] z[4] - x[2] y[3] z[4]`.

Given a long set of identities (some involving all the terms, some only involving one), I am trying to see if there is a way to represent this arbitrary polynomial as a product of some kind of all of these identities (of which there are a lot). It may well be that there is no way to represent this as a product, which is equally useful to know. As an example, my identities may look something like 
 `s345 = (x[3] - x[4] y[3] - x[1] z[3] + x[1] y[3] z[4])/(x[1] (x[3] - x[4]))`, and others which may be simpler, or of a different form entirely. My problem posed is quite general, however, I chose my simple example to illustrate the general idea of what I am trying to achieve.