lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Hi Egor,

you may possibly stay within the tmieout with this algorithm:
(this isonly a test snippet, it uses fixed a and m)

local p={ 2,3,5,7,11,13,17,19 }
local m=2
local a=4

-- vektor of exponents
local i={}
local sum=0

-- k is the exponent to count through
-- u is the available occurrences
--
local function find( k, u )
    if k==0 then
        -- made a full counting step
        -- compute the divisor from the  prime factors
        local f=1
        for j,e in ipairs( i ) do
            f = f * p[j] ^ e
        end
        -- multiply by frequency and add
        sum = sum + f*u
        while sum > 1000000007 do sum = sum - 1000000007 end
    else
        i[k-1] = 0
        for x=0,a+k do
            i[k] = x
            find( k-1, u * (a+k+1-x) )
        end
    end
end

find(m, 1)
print(sum)


Am 04.01.2017 um 13:10 schrieb Egor Skriptunoff:
Hi!

I have made an attempt to use Lua as language for solving problems
in a programming contest.
I came across a situation where I can solve a problem using Pascal,
but not using Lua (4 test cases of 10 were failed due to timeout).

This is the problem I'm talking about:
https://www.hackerrank.com/contests/infinitum17/challenges/divisor-exploration-2
The contest is over, so it is OK to discuss the solutions.