Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Интересная задачка


Автор: Syrex 4.12.2007, 12:30
Некоторое число заканчивается на "2". Если ее переставить на первое место, то число удвоится. Какое число было изначально?
(число целое)

Разрядность числа неизвестна. 

Код

         A=0.0; - не знаю - какой тип можно использовать для этого 
         B=0;

        AnsiString AText;
        AnsiString BText;
        for(A=0;;A++)
        {
                AText=(A); //(Преобразование числа в строку)
                if(AText[AText.Length()]=='2')
                {
                        BText="2"+AText.SubString(1,AText.Length()-1);
                        B=(BText); //Преобразование строки в число
                        if(2*A==B)
                        {
                                ShowMessage(AText+"\n"+BText);
                                break;
                        }

                }
                if(A%(100000)==0)
                {
                        Application->ProcessMessages();
                        StaticText1->Caption=AText;
                }
        }



Может у кого есть идеи?

Автор: ksili 4.12.2007, 12:41
Ты же сам написал

Цитата(Syrex @  4.12.2007,  16:30 Найти цитируемый пост)
число целое

Ну так и используй int

Автор: Syrex 4.12.2007, 12:47
пробовал unsiged long int - не хватает

Автор: ksili 4.12.2007, 12:56
Никакого типа не хватит, если вводить очень большие числа. Задайся какой-то верхней границей числа, и сразу станет ясно какой тип подходит.

В Билдере, если что, есть тип __int64 - 64-разрядное целое

Автор: Syrex 4.12.2007, 13:03
Число нащел математическим методом - получилось 18 разрядов.

Добавлено через 8 минут и 40 секунд
Спасибо. __int64 хватило )))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)