удалить все значения из списка a, которые есть в списке b. Если элемент встречается в b, неважно сколько раз, все его вхождения в a надо удалить. Оставить только те, что не всречаются в b. array_diff, упомянутый в вопросе, работает точно так же.
я поместил Вашу формулу i = beta * input % N в
while i < 100:i = beta * input % N
result = divnum(input*beta %N, i)divnum(input*beta %N, i) это то же самое, что ваше:d= (divnum(input,delta))
s = divnum(i,gamma) %N
result = divnum(d,s)result = 1 а i меньше инпут. Поэтому я могу найти инпут за количество операций = i а не инпуту.
Мои формулы сделаны так, что бы потом можно было инпут востановить кргда находится result = 1
z = 0x5f87 * 0x42 % N = 0x18a0ce а не 1!
я как понял это решение дает всегда i > input ?!
input в задаче неизвестное ! А вы его используете как известную величину. Input и надо найти !!!
вы постоянно хотите чето рвзузнать
Надо подобрать a,b,c,d так, что любое/как можно больше x= random.randint(2**119,2**120) после домножения на 1/a*b/c*d было меньше 10^70?
int x, y, k, S = 0;Создает переменные x, y, k и s. Только последняя инициализируется 0. Если выхотите их все инициализировать, то писать надо:
int x = 0, y = 0, k = 0, S = 0;Обычно, правда, в одну строку так не пишут, ибо читать сложно. Если переменные инициализируются, то лучше каждую объявлять на отдельной строке.
Про второе - У вас код по логике в массив записывает 2 восьмерки на местро троек. Но вместо этого он сравнивает значения из массива с 8 вне условия в if.
a = 10;- присваивает переменной a значение 10.a == 10;- не делает фактически ничего. Производится сравнение и результат игнорируется.