from math import log10,ceil; class InvalidDataError(Exception): def __init__(self,data): self.Data=data; cb=log10(2); def getPot(n): pot=ceil(n.bit_length()*cb); if (n-10**pot) < 0 and (n-10**(pot-1)) >= 0: return pot-1; elif (n-10**(pot-1)) < 0 and (n-10**(pot-2)) > 0: return pot-2; else: raise InvalidDataError('No power number'); # end def def getDigit(pot,n): dig=0; while (n-dig*10**pot) >= 0: dig+=1; return dig-1; # end def def getSumOfDigists(n): qs=0; maxPot=getPot(n); pot=maxPot; while n>0: # dig=getDigit(pot,n); dig=0; while (n-dig*10**pot) >= 0: dig+=1; dig+=-1; qs+=dig; n=n-dig*10**pot pot-=1; # end while return qs; # end def qs=getSumOfDigists(2**(10**5)); # 5 läuft bereits 1,5 Minuten print(qs); ## >>> ## 7 ## >>> ================================ RESTART ================================ ## >>> ## 115 ## >>> ================================ RESTART ================================ ## >>> ## 1366 ## >>> ================================ RESTART ================================ ## >>> ## 13561 ## >>> ================================ RESTART ================================ ## >>> ## 135178 ## >>>