# Solutions for Problem 99

Given a file with 1000 base/exponent pairs, find the line number of the largest number.

Runtime: 7.536 ms

```{- List of base and exponent pairs -}
bxp :: [(Double,Double)]
bxp = [<...>]

{- Zip them with the natural numbers to have line number available -}
nbx = zip [1..] bxp

{- Find the line of the largest number.
- NOTES:
- 1. log b^e == e * log b
- 2. x > y => log x > log y -}
findmax :: [(Integer,(Double,Double))] -> Integer
findmax ns = inner 0 0 ns
where
inner line val [] = line
inner line val ((l,(b,e)):xs)
| cv > val = inner l cv xs
| otherwise = inner line val xs
where
cv = e * log b

{- Do the search and print the result -}
main = print (findmax nbx)
```

## Ruby by tomchristmas

A simple logarithmic identity...

Runtime: 63ms

```num_list = []

count = 0
line_num = 0
greatest = 0.0

File.open("base_exp.txt", "r"){|f|
f.each{|line|
num_list << line.chop.split(",")
}
}

num_list.each{|x|
count += 1
y = ((x.to_i) * Math.log(x.to_f))
puts y
if (y > greatest)
greatest = y
line_num = count
end
}

puts line_num
```

## Python by Althalus

Runtime: 1ms

```from math import log
base_exps = [
(519432,525806),
(632382,518061),
(78864,613712),
.....
]
line = 0
res = 0
for i in xrange(len(base_exps)):
tmp = base_exps[i]*log(base_exps[i]) # log(a^b) = b* log(a). High school stuff.
if tmp > res:
res = tmp
line = i
print line+1 # Lists are 0 indexed.
```