Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '''
- Корректно работает только для count < 18000
- После 18000 программа работает дольше секунды
- Нужно разобраться, почему не работает пропуск начальных значений:
- if count > 18000:
- counter = 18000
- current_number = 8001008
- '''
- #from time import time
- count = int(input())
- #start = time()
- counter = 9
- current_number = 11
- def IsPalindrom(number):
- number1 = list(str(number))
- number2 = list(str(number))
- number2.reverse()
- if number1 == number2:
- return True
- else:
- return False #IF NUMBER IS PALINDROM RETURNS TRUE
- def NotPalindrom(number):
- number1 = list(str(number))
- number2 = list(str(number))
- number2.reverse()
- if number1 != number2:
- return True
- else:
- return False #IF NUMBER IS NOT PALINDROM RETURNS TRUE
- def NextNumber(current_number):
- if current_number < 90:
- next_number = current_number + 11
- return next_number
- elif current_number == 99:
- return 101
- elif current_number < 999:
- next_number = current_number + 10
- while NotPalindrom(next_number):
- next_number += 1
- return next_number
- elif current_number == 999:
- return 1001
- elif current_number < 9999:
- if IsPalindrom(current_number + 110):
- return current_number + 110
- else:
- return current_number + 11
- elif current_number == 9999:
- return 10001
- elif current_number < 99999:
- current_number1 = list(str(current_number))
- current_number_list = []
- for element in current_number1:
- current_number_list.append(int(element))
- if current_number_list[2] + 1 < 10:
- return current_number_list[0] * 10000 + current_number_list[1] * 1000 + (current_number_list[2] + 1) * 100 + current_number_list[3] * 10 + current_number_list[4]
- else:
- if current_number_list[1] + 1 < 10:
- return current_number_list[0] * 10000 + (current_number_list[1] + 1) * 1000 + (current_number_list[3] + 1) * 10 + current_number_list[4]
- else:
- return (current_number_list[0] + 1) * 10000 + (current_number_list[4] + 1)
- elif current_number == 99999:
- return 100001
- elif current_number < 999999:
- current_number1 = list(str(current_number))
- current_number_list = []
- for element in current_number1:
- current_number_list.append(int(element))
- if current_number_list[2] + 1 < 10:
- return current_number_list[0] * 100000 + current_number_list[1] * 10000 + (current_number_list[2] + 1) * 1000 + (current_number_list[3] + 1) * 100 + current_number_list[4] * 10 + current_number_list[5]
- else:
- if current_number_list[1] + 1 < 10:
- return current_number_list[0] * 100000 + (current_number_list[1] + 1) * 10000 + (current_number_list[4] + 1) * 10 + current_number_list[5]
- else:
- return (current_number_list[0] + 1) * 100000 + (current_number_list[5] + 1)
- elif current_number == 999999:
- return 1000001
- elif current_number < 9999999:
- current_number1 = list(str(current_number))
- current_number_list = []
- for element in current_number1:
- current_number_list.append(int(element))
- if current_number_list[3] + 1 < 10:
- return current_number_list[0] * 1000000 + current_number_list[1] * 100000 + current_number_list[2] * 10000 + (current_number_list[3] + 1) * 1000 + current_number_list[4] * 100 + current_number_list[5] * 10 + current_number_list[6]
- else:
- if current_number_list[2] + 1 < 10:
- return current_number_list[0] * 1000000 + current_number_list[1] * 100000 + (current_number_list[2] + 1) * 10000 + (current_number_list[4] + 1) * 100 + current_number_list[5] * 10 + current_number_list[6]
- else:
- if current_number_list[1] + 1 < 10:
- return current_number_list[0] * 1000000 + (current_number_list[1] + 1) * 100000 + (current_number_list[5] + 1) * 10 + current_number_list[6]
- else:
- return (current_number_list[0] + 1) * 1000000 + (current_number_list[6] + 1)
- elif current_number == 9999999:
- return 10000001
- elif current_number < 99999999:
- current_number1 = list(str(current_number))
- current_number_list = []
- for element in current_number1:
- current_number_list.append(int(element))
- if current_number_list[3] + 1 < 10:
- return current_number_list[0] * 10000000 + current_number_list[1] * 1000000 + current_number_list[2] * 100000 + (current_number_list[3] + 1) * 10000 + (current_number_list[4] + 1) * 1000 + current_number_list[5] * 100 + current_number_list[6] * 10 + current_number_list[7]
- else:
- if current_number_list[2] + 1 < 10:
- return current_number_list[0] * 1000000 + current_number_list[1] * 100000 + (current_number_list[2] + 1) * 10000 + (current_number_list[5] + 1) * 100 + current_number_list[6] * 10 + current_number_list[7]
- else:
- if current_number_list[1] + 1 < 10:
- return current_number_list[0] * 1000000 + (current_number_list[1] + 1) * 100000 + (current_number_list[6] + 1) * 10 + current_number_list[7]
- else:
- return (current_number_list[0] + 1) * 1000000 + (current_number_list[7] + 1)
- if count < 10:
- if count == 1:
- print(1)
- if count == 2:
- print(2)
- if count == 3:
- print(3)
- if count == 4:
- print(4)
- if count == 5:
- print(5)
- if count == 6:
- print(6)
- if count == 7:
- print(7)
- if count == 8:
- print(8)
- if count == 9:
- print(9)
- else:
- while count - 1 != counter:
- counter += 1
- current_number = NextNumber(current_number)
- print(current_number)
- #print(time() - start)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement