A super-d number is a positive, decimal (base ten) integer   n   such that   d × nd   has at least   d   consecutive digits   d   where

   2 ≤ d ≤ 9

For instance, 753 is a super-3 number because 3 × 7533 = 1280873331.


Super-d   numbers are also shown on   MathWorld™   as   super-d    or   super-d.



Task

 Write a function/procedure/routine to find super-d numbers.
 For   d=2   through   d=6,   use the routine to show the first   10   super-d numbers.


Extra credit

 Show the first   10   super-7, super-8, and/or super-9 numbers   (optional).


See also

   Wolfram MathWorld - Super-d Number.
   OEIS: A014569 - Super-3 Numbers.


import Data.List (isInfixOf)
import Data.Char (intToDigit)
 
isSuperd :: (Show a, Integral a) => a -> a -> Bool
isSuperd p n =
  (replicate <*> intToDigit) (fromIntegral p) `isInfixOf` show (p * n ^ p)
 
findSuperd :: (Show a, Integral a) => a -> [a]
findSuperd p = filter (isSuperd p) [1 ..]
 
main :: IO ()
main =
  mapM_
    (putStrLn .
     ("First 10 super-" ++) .
     ((++) . show <*> ((" : " ++) . show . take 10 . findSuperd)))
    [2 .. 6]