""" 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))
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))
def solveinthread(self, widget, func): answer = best_time(func) print(answer) self.threadq.put(lambda:self.displayanswer(widget, answer))
# 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))
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))