Форум » Обработка целых чисел » 4986 » Ответить

4986

LostFly: [pre2] def p(x): if x%2==0: return 0 for i in range(3, int(x ** 0.5 + 2),2): if x % i == 0: return 0 if str(x) == str(x)[::-1]: return 1 else: return 0 def p2(x): s =1 s1 = str(x) for i in range(len(s1)): if s1[ i]!='0': s*= int(s1[ i]) else: continue return s pp =[0]*9**9 for i in range(10**2, 10**9): if p(i)==1: pp[p2(i)]=p2(i) mxpp = max(pp) for i in range(10**2, 10**9): if p(i)==1 and p2(i)==pp.index(mxpp): print(i) [/pre2] Подскажите, как написать эффективный алгоритм для столь большого промежутка чисел.

Ответов - 2

LostFly: LostFly пишет: if p(i)==1: pp[p2(i)]=p2(i) Здесь неверно написал, нужно считать количество чисел с таким произведением цифр [pre2] pp[p2(i)]+=1 [/pre2]

Поляков: 1) начинайте с бОльшего 2) рассматривайте ТОЛЬКО палиндромы



полная версия страницы