5 languages, 18 bytes / 5^3 = 0.144
Ouroboros, Pip, QBasic, Foo, and Pyth
5'"4"()" 1?3'@n()2 ###1. Ouroboros
Each line of the program represents a snake eating its tail.
Snake 1
Push 5, ' is a no-op, push 52 (ASCII code of "4"). ( causes the snake to pop a number and eat that many characters of its tail. Since this results in swallowing the instruction pointer (and the entire snake), execution halts.
Snake 2
Push 1, push a random number (?), push 3, ' is a no-op. @ rotates the 1 to the top of the stack and n outputs it as a number, leaving the 3 on top of the stack. Then ( eats this many characters from the end of the snake, swallowing the instruction pointer and halting.
You can run this program online in the Stack Snippet interpreter herehere.
###2. Pip
Most of the program consists of expressions which are evaluated and discarded:
5'"(character literal)4"()"1?3'@(ternary expression)n(variable, = newline)()(nil)
Finally, the last expression, 2, is printed.
###3. QBasic
Everything after ' is a comment. The first line thus boils down to 5, a line number. On the second line, 1 is a line number and ?3 is a shortcut for PRINT 3.
(Apparently having line numbers out of order isn't a problem, though it would be easy to fix if it were.)
###4. Foo
Almost everything is no-ops. "4" prints 4. The parentheses (x2) are a loop that runs until the current array cell is zero, which is true immediately and the loop exits. @, when not followed by a number, takes the value of the current array cell (initialized to 0) and pushes it to the stack.
I'm not entirely sure how the second, unmatched " is supposed to be handled. The online version seems to add a newline to the output, which the rules of the challenge allow.
###5. Pyth
5 is output. Then the program encounters '"4", which tries to read from a file named 4. As long as no such file exists, I think this should terminate the program with an error. (The online version says name 'open' is not defined--I assume because opening files isn't allowed online.)
The stray " at the end of line 1 ensures that line 2 doesn't cause a syntax error before execution.