Calcule la n-ième décimale du nombre de Champernowne (0,123456789101112131415…) avec deux fonctions. brutale ne permet pas d’aller trop loin, maline est plus rapide et plus économe.
def champer(n): return ((9*n-1)*10**n+1)//9 def brutale(n): s="" i=1 while len(s)<n: s+=str(i) i+=1 return s[n-1] def maline(n): i=0 while champer(i)<n: i+=1 i-=1 q,r=divmod(n-champer(i)-1,i+1) return str(q+10**(i))[r]