пусть исходное число - А, полученное - В
начинаем с последней цифры числа А, т.е. с двойки каждая последующая цифра числа А должна быть в 2 раза меньше предыдущей, т.е. для того, чтобы узнать, какая цифра предшествует конечной "двойке" в числе А, надо 2*2=4, перед "четверкой" : 4*2=8 и т.д. если получается 2-значное число, то мы (как при счете столбиком в 5 классе) единицы записываем, а число десятков запоминаем и потом прибавляем к следующей полученной цифре и так до тех пор, пока не получим 10 (т.к. первая цифра числа А должна быть в 2 раза меньше первой цифры числа В, т.е. "двойки") в общем, получилось, что расчетов никаких не было, простые арифметические действия Добавлено спустя 1 минуту 8 секунд: простите, если непонятно, я не спец по объяснению решений математических задачек ![]() _________________ ночь и тишина я слышу каждую звезду |
вон люди оказываются думают.. а мы компы заставляем считать ) |
![]() |
MARIE
мда... ![]() ![]() бедный мой комп))))) он сидел проверял все числа заканчивающиеся на "2", начиная с "2" Добавлено спустя 4 минуты 50 секунд: char ыы)) не люблю строковые типы)))) БУ! ![]() uses crt; var a,b,n,m:real; i:byte; begin a:=-8; while 1<2 do begin i:=0; a:=a+10; m:=a; while m<>0 do begin n:=m; m:=int(n/10); i:=i+1; end; b:=2*power(10,i)+int(a/10); if b=a*2 then break; end; write(a); end. Добавлено спустя 2 минуты 42 секунды: VM писал(а): moishe
лови решение)) все, уже не лови)))) обнародовали)) _________________ Не бывает безвыходных ситуаций. Есть только ситуации, выход из которых тебя не устраивает... Я вернулся =) |
Задача конечно же решается в уме. Цифры получаются по одной справа налево. Поскольку их довольно много (18), целесообразно использовать бумажку и ручку. Алгоритм, при помощи которого генерируются цифры, изложил char на формальном языке и MARIE на неформальном. В основе алгоритма - сложение "столбиком". Программу, которую написал VM, я не понял.
Добавлено спустя 7 минут 46 секунд: А, вроде понял. Он проверяет все числа, заканчивающиеся на 2, обладают ли они требуемым свойством. То есть, последовательно проверяет: 2, 12, 22, 32, 42, 52, .... Причем сам алгоритм перебора тоже довольно... э-э-э.. своеобразный. Что-то я сомневаюсь, что емкости типа real достаточно для точного хранения 18-значного числа. Поясните, знатоки паскаля, сколько значащих цифр влазит в real? |
Minya писал(а): как из этого может получиться твоёкряква, це шутко была. _________________ "Ну случайно, ну шутя, сбилась с верного путя! Так ведь я - дитя природы, пусть дурное, но - дитя..." Л. Филатов. |
moishe писал(а): ]сколько значащих цифр влазит в real?Вещественный тип real (6 байт): Диапазон: 2.9E-39 - 1.7E38 11-12 значащих цифр для точного хранения 18-значного числа имхо недостаточно ![]() А задачко красивая)) _________________ Не бывает вечных двигателей. Бывают только вечные тормоза. |
так и не проверил на работоспособность эту прогу...
я сначала хотел использовать extended (10 байт) или doble (8 байт) но ни то ни то паскаль не понял, может у кого есть версия поновее? кроме 7 турбо... Добавлено спустя 23 секунды: breaker писал(а): для точного хранения 18-значного числа имхо недостаточно теоретически должно хватить _________________ Не бывает безвыходных ситуаций. Есть только ситуации, выход из которых тебя не устраивает... Я вернулся =) |
юзай c#, он у всех есть ![]() _________________ Ин дер гросен фамилие нихт клювен клац-клац ![]() |
и вообше... пора basic учить ![]() ![]() ![]() Добавлено спустя 1 минуту 4 секунды: "с" че? еще раз для особо одаренных пожалста _________________ Не бывает безвыходных ситуаций. Есть только ситуации, выход из которых тебя не устраивает... Я вернулся =) |
"Си шарп" читается.
твоим способом программа выглядит примерно так:
_________________ Ин дер гросен фамилие нихт клювен клац-клац ![]() |
сцуко, я забыл оптимизировать a*2+b = a+a+b ![]() |
короче я устал ждать, когда программка выдаст правильный ответ, за полтора суток дошел до числа 26815000000
или комп тормозной или чо. хотя, конечно, сильно тормозит конструкция if(i.ToString().EndsWith("000000")) Console.WriteLine("Current: {0}", i); _________________ Ин дер гросен фамилие нихт клювен клац-клац ![]() |
char писал(а): я забыл оптимизировать a*2+b = a+a+b(a<<1)+b; - так еще оптимальнее. На Паскале можно так? |
гы, moishe, это был процентов на 60% - стёб, ибо компилер сам соптимизит... но, для подрастающего поколения полезно все-ж иногда напоминать, что - умножение заменять сложением - так-то неплохо, как бы вот, короче, ога-ога ![]() |
char писал(а): для подрастающего поколения полезно все-ж иногда напоминатьок)) мотаем на ус, пока рассказывают)))))) ![]() _________________ Не бывает безвыходных ситуаций. Есть только ситуации, выход из которых тебя не устраивает... Я вернулся =) |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы можете скачивать файлы |