Post date: Sep 11, 2014 12:39:22 AM
"Find all ten digit numbers that contain all digits from 0 to 9 where the 3 digits starting from index 2 are divisible by 2, the 3 digits starting from index 3 are divisible by 3, the 3 digits starting from index 4 are divisible by 5, 3 from index 5 are divisible by 7, 3 from index 6 are divisible by 11, 3 from index 7 are divisible by 13, and 3 from index 7 are divisible by 17. Sum them."
This is a basic query with substrings. There's basically nothing to the problem. Obnoxious but simple.
CREATE TABLE #Integers (i tinyint not null primary key)
INSERT INTO #Integers (i) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9)
; WITH PanDigital (p) As
(
SELECT RTRIM(d1.i) + RTRIM(d2.i) + RTRIM(d3.i) + RTRIM(d4.i) + RTRIM(d5.i) + RTRIM(d6.i) + RTRIM(d7.i) + RTRIM(d8.i) + RTRIM(d9.i) + RTRIM(d10.i)
FROM #Integers d1
INNER JOIN #Integers d2
ON d2.i <> d1.i
INNER JOIN #Integers d3
ON d3.i <> d1.i
AND d3.i <> d2.i
INNER JOIN #Integers d4
ON d4.i <> d1.i
AND d4.i <> d2.i
AND d4.i <> d3.i
INNER JOIN #Integers d5
ON d5.i <> d1.i
AND d5.i <> d2.i
AND d5.i <> d3.i
AND d5.i <> d4.i
INNER JOIN #Integers d6
ON d6.i <> d1.i
AND d6.i <> d2.i
AND d6.i <> d3.i
AND d6.i <> d4.i
AND d6.i <> d5.i
INNER JOIN #Integers d7
ON d7.i <> d1.i
AND d7.i <> d2.i
AND d7.i <> d3.i
AND d7.i <> d4.i
AND d7.i <> d5.i
AND d7.i <> d6.i
INNER JOIN #Integers d8
ON d8.i <> d1.i
AND d8.i <> d2.i
AND d8.i <> d3.i
AND d8.i <> d4.i
AND d8.i <> d5.i
AND d8.i <> d6.i
AND d8.i <> d7.i
INNER JOIN #Integers d9
ON d9.i <> d1.i
AND d9.i <> d2.i
AND d9.i <> d3.i
AND d9.i <> d4.i
AND d9.i <> d5.i
AND d9.i <> d6.i
AND d9.i <> d7.i
AND d9.i <> d8.i
INNER JOIN #Integers d10
ON d10.i <> d1.i
AND d10.i <> d2.i
AND d10.i <> d3.i
AND d10.i <> d4.i
AND d10.i <> d5.i
AND d10.i <> d6.i
AND d10.i <> d7.i
AND d10.i <> d8.i
AND d10.i <> d9.i
)
SELECT p
INTO #Pandigital
FROM PanDigital
SELECT SUM(CONVERT(bigint,p))
FROM #Pandigital
WHERE SUBSTRING(p,2,3) % 2 = 0
AND SUBSTRING(p,3,3) % 3 = 0
AND SUBSTRING(p,4,3) % 5 = 0
AND SUBSTRING(p,5,3) % 7 = 0
AND SUBSTRING(p,6,3) % 11 = 0
AND SUBSTRING(p,7,3) % 13 = 0
AND SUBSTRING(p,8,3) % 17 = 0
DROP TABLE #Integers
DROP TABLE #Pandigital