Búsqueda del triángulo de Python, operación aritmética dentro de la impresión

Intento resolver este problema, lo sé, puedo hacerlo así.

for i in range(1,input()): print int(str(i)*i) 

Funciona, pero no puedo usar cadenas, así que tengo una idea para hacer eso así

 for i in range(1,input()): sum+=10**i print i*((1+sum)%10**i) 

 for i=1 1*(1+10)%10, for i=2 2*((1+110)%100), for i=3 3*((1+1110)%1000) etc. 

Pero no funciona y tiene más de 2 líneas 🙁 ¿Alguien tiene idea de cómo resolver este problema? En general, sé cómo resolver este problema matemáticamente, pero no sé cómo hacerlo en Python (no use la cadena y escriba no más de 2 líneas)

Algo que ayuda aquí es la ecuación para una ” Repunit “. Tomando la ecuación de la i’th Repunit de esa página de Wikipedia, y sustituyendo 10 en por b (base 10), obtenemos la ecuación (10**i - 1) / (10 - 1) o (10**i - 1) / 9 . Esto resulta en la secuencia: 1, 11, 111, 1111... Multiplicando por i, logramos el resultado deseado:

 >>> for i in range(1,input()): ... print i * (10**i - 1) / 9 5 1 22 333 4444