Показать сообщение отдельно
  #6  
Старый 17.02.2010, 23:18
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
По умолчанию

malekskv откуда задача ? с http://acm.timus.ru ? Вроде я там видел подобную...

Решение выглядит очень просто:

1. Пусть abc...defxy - формат числа, которое надо найти
2. Нам даются две последние цифры - x и y ( в примере x=0 y=6 )
3. Тогда если искомое число умножить на 2, должно получится число xyabc...def
3. Попробуем умножить искомое число на 2 в столбик:
Тогда видно, что:
f = y*2 mod 10
p = y*2 div 10 // перенос, если y*2 >= 10

След. шаг:
e = (x*2+p) mod 10
p = (x*2+p) div 10

След. шаг:
d = (f*2+p) mod 10
p = (f*2+p) div 10

И т.д

И выполнять это надо до момента, когда две последние полученные цифры станут равными x и y и перенос при этом будет равен 0
__________________
Велик и могуч наш Object Pascal !
ICQ: 357-591-887
Ответить с цитированием