Перейти к содержанию

Цитатко на Баше


Рекомендуемые сообщения

Собсно сама цитата:


>>Из бухгалтерии принисли задачку:

>>Некоторое число заканчивается на "2". Если ее переставить на >>первое место, то число удвоится. Какое число было >>изначально?

>>Работа IT отдела была парализована! Напрочь!!!

А чем тут парализовывать то?

105263157894736842

210526315789473684 - оно же, но удвоенное

эт ты канешна так постебался да? по моему 12 и 24 попроще будет...

далбайоп, ты четать/щетать умееш?

12 -> 21, а не 24. для тебя, наверно, проще, если мозгов на большее не хватает


Как прочитал сразу решил проверить на практике *05

Установил Delphi и написал такой код в обработчике кнопки:

procedure TForm1.Button1Click(Sender: TObject);
var
k, i, x1, x2: int64;
z, y: integer;
s, sx: string;
begin
i:=12;
k:=0;
while True do
begin
x1:=i;
s:=IntToStr(x1);
sx:='2';
y:=Length(s);
for z := 2 to y - 3 do
begin
sx:=sx+s[z];
end;
sx:=sx+s[1];
inc(k);
i:=i+10;

if k mod 500000=0 then
begin
label2.Caption:=IntToStr(k);
Application.ProcessMessages;
end;

if StrToInt64(sx)=2*StrToInt64(s) then break;
end;
edit1.Text:=sx;
end;

Это чудо считает просто _крайне_ медленно.

Можно как-то ускорить обработку?

Ссылка на комментарий

genemy

asm я не асилю :(

а прога моя реальный тормоз, superpi считает за 30 секунд до миллиона знаков после запятой у числа пи, а моя по 6 знаков в секунду (((

Ссылка на комментарий

А эту цитатку видели:

Про то число, что на 2 заканчивается, а при переносе двойки в начало удваивается.

x - искомое число. Предполагаю, что оно целое и даже натуральное: все-таки задачка из бухгалтерии.

Его можно представить как x = 10*y + 2, тогда 2*x = 20*y + 4;

Перестановку двойки в начало можно записать так:

y + 2 * 10^(n - 1), где n - число знаков в x.

Т.е. по условию 2*x = y + 2 * 10^(n - 1);

Решая систему двух уравнений получаем:

x = ((10^n) - 1)*2/19.

дальше либо перебором с проверкой находим n = 18,

и получаем x = 105 263 157 894 736 842.

либо учимся решать уравнение

(((10^n) - 1)*2/19)(mod 2) = 0,(т.к. x - четное)

и находим все решения этой задачки. Но это уже выше моих умственных способностей

ЗЫ Тож решил прогу накорябать, долго думал где в строке "if (exx) then break;" ошибка :rofl:

Ссылка на комментарий
А эту цитатку видели:

x = ((10^n) - 1)*2/19.

дальше либо перебором с проверкой находим n = 18,

и получаем x = 105 263 157 894 736 842.

либо учимся решать уравнение

(((10^n) - 1)*2/19)(mod 2) = 0,(т.к. x - четное)

и находим все решения этой задачки. Но это уже выше моих умственных способностей

ЗЫ Тож решил прогу накорябать, долго думал где в строке "if (exx) then break;" ошибка *142

хм =) у меня такая формулка получилась:

x = ( 2 * 10 ^ n - 40) / 19 + 2 =)

#include 
#include
using std:: cout;
using std:: endl;
#define DIGITS 20
int main( )
{
unsigned long long ull_num = 0, ull_tmp = 0;
for( unsigned long a = 2; a < DIGITS; a ++)
{
ull_num = ( 2 * powl( 10, a) - 40) / 19 + 2;
if( ull_num % 10 == 2)
{
ull_tmp = ull_num / 10;
ull_tmp += 2 * powl( 10, a - 1);
if( ull_num * 2 == ull_tmp)
cout << ull_num << "->" << ull_tmp << endl;
}
}
}

с ответом сходится =)))

Ссылка на комментарий
  • 3 недели спустя...

задействовавмат логику получается моно решить логически

если в конце стоит 2 то перед ней должна стоять 4

если стоит 2 то перед ней должна стоять 4

если стоит 4 то перед ней должна стоять 8

если стоит 8 то перед ней должна стоять 16 но берём только 6 а 1 запоминаем

если стоит 6 то перед ней должна стоять 2+1 от прошлогго действия

если стоит 3 то перед ней должна стоять 6+1

если стоит 7 то перед ней должна стоять 4

если стоит 4 то перед ней должна стоять 8+1

если стоит 9 то перед ней должна стоять 8

если стоит 8 то перед ней должна стоять 6+1

если стоит 7 то перед ней должна стоять 4+1

если стоит 5 то перед ней должна стоять 0+1

если стоит 1 то перед ней должна стоять 2+1

если стоит 3 то перед ней должна стоять 6

если стоит 6 то перед ней должна стоять 2

если стоит 2 то перед ней должна стоять 4+1

если стоит 5 то перед ней должна стоять 0

если стоит 0 то перед ней должна стоять 0+1

если стоит 1 то перед ней должна стоять 2

и вот она эта чистая 2 => это число 105263157894736842

Ссылка на комментарий
  • 6 месяцев спустя...
  • 1 месяц спустя...

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...