Skip to content

Instantly share code, notes, and snippets.

@index333
Created December 1, 2017 21:29
import Control.Parallel
import Control.Parallel.Strategies (rpar, Strategy, using)
import Text.Printf
n=10^18^4
m0 = 5
m1 = 239
g n m = let a = scanl f (n `div` m) [5,9..]
b = scanl f ((n `div` m ^ 3) `div` 3) [7,11..]
in sum (takeWhile (>0) a) - sum (takeWhile (>0) b)
where f x y = (x `div` m^4)*(y-4) `div` y
main = print $ (a * 4 - b) * 4
where (a,b) = (g n m0, g n m1) `using` parPair
parPair :: Strategy (a,b)
parPair (a,b) = do
a' <- rpar a
b' <- rpar b
return (a',b')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment