Contar dígitos en cuadrados consecutivos

Eleva al cuadrado todos los números enteros desde 0 hasta n, incluidos ambos extremos. Luego, cuenta cuántas veces aparece el dígito d en la representación decimal de todos esos cuadrados.

Ejemplos

Program.CountDigits(10, 1) // 4
// Los cuadrados desde 0 hasta 10 son 0, 1, 4, 9, 16, 25, 36, 49, 64, 81 y 100.
// El dígito 1 aparece cuatro veces.

Program.CountDigits(25, 2) // 9

Notas

d siempre es un dígito decimal entre 0 y 9.