コード例 #1
0
    """
    total = 0
    cycles = 10
    for c in range(cycles):
        if n:
            multiplier = (n%10)*10**c 
            total += multiplier * m
            n //= 10
    return total


#a = 12345678999776
#b = 123456789987654
#print(str(a*b)[-10:] == str(just10mult(a,b))[-10:])



def solve():
    total = 0
    mod = 10**10
    for n in range(1,1001):
        total += n**n
    return str(total)[-10:]




if __name__ == '__main__':
    from lib.timer import best_time
    print(best_time(solve,_reps=2))
コード例 #2
0
    while True:
        if is_pan_multiple(PN):
            return PN
        else:
            PN = decrement_pandigital(PN)

def count_up(pn,reps=10):
    for _ in range(reps):
        print(pn.number)
        pn.increment() 

def count_down(pn,reps=10):
    for _ in range(reps):
        print(pn.number)
        pn.decrement() 
   
def test_increment():
    pn = PandigitalNumber()
    count_up(pn)

def test_decrement():
    pn = PandigitalNumber(987654321)
    count_down(pn) 

solve = main
if __name__=='__main__':
    from lib.timer import best_time
    print(best_time(main))
    print(best_time(main2))

コード例 #3
0
 def solveinthread(self, widget, func):
     answer = best_time(func)
     print(answer)
     self.threadq.put(lambda:self.displayanswer(widget, answer))
コード例 #4
0
# not number is divisible by 3 if the sum of its digits is divisible by 3
# all pandigital number except those of length 4 or 7 are divisible by 3

def is_pandigital(n):
    string = str(n)
    return sorted(string) == is_pandigital.match[len(string)] 
     
is_pandigital.match = {4: sorted('1234'), 7: sorted('1234567')}
    
def prime_list(stop):
    p = [False,False]+[True]*(stop-1)
    for i in range(int(stop**0.5)+1):
        if p[i]:
            p[i+i::i] =[False]*((len(p)-1-i) // i)
    return p

def solve():
    primes = prime_list(stop=7654321)
    start_stop_step = ( (7654321,1234568,-1),(4321,1235,-1) )
    for start,stop,step in start_stop_step:
        for i in range(start,stop,step):
            if primes[i] and is_pandigital(i):
                return i
    return None 

if __name__=='__main__':
    from lib.timer import best_time
    print(best_time(solve))
    
コード例 #5
0
        index = last_known_index + offset * n  
        I[index] = value
        last_known_index,last_known_value = index,value
        n += 1
    total = 1
    known_indices = list(reversed(sorted(I.keys())))
    for index in (1,10,100,1000,10000,100000,1000000):
        if index < 10:
            total *= index 
        else:
            # get appropriate known index
            # offset = (index_in_question - known_index)//number of digits  
            # offset + prev value + 1
            for known in known_indices:
                if index >= known:
                    known_value,known_index = I[known],known
                    offset = index-known_index
                    digits = len(str(known_value))+1
                    number = (offset//digits) + known_value+1
                    remainder = offset % digits
                    total *= int(str(number)[remainder-1])
                    break
    return total           

                    
solve = eloquent
if __name__=='__main__':
    from lib.timer import best_time
    print(best_time(eloquent))
    print(best_time(brute))