Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C] Задача на нахождение числа 
:(
    Опции темы
anad
Дата 22.11.2006, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 30.3.2006

Репутация: нет
Всего: нет



Некоторое число оканчивается на 2. Если же эту его последнюю цифру переставить на первое место, то число удвоится. Найти это число. 
PM MAIL   Вверх
Solomon
Дата 22.11.2006, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

Репутация: 2
Всего: 2



А такое число вообще сущетвует? А то я что то немогу такого числа представить...


--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
Kuvaldis
Дата 22.11.2006, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 32
Всего: 61



anad, 
имхо, должен быть указан диапазон, в котором нужно искать...
А вдруг таких чисел бесконечное множество???


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
Solomon
Дата 22.11.2006, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

Репутация: 2
Всего: 2



да вряли их бесконечное множество. Я например немогу и одного придумать  smile 


--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
anad
Дата 23.11.2006, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 30.3.2006

Репутация: нет
Всего: нет



Не знаю, препод такую задачу дал. Ерунда какая-то.
PM MAIL   Вверх
AlexST
Дата 23.11.2006, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 30.4.2006
Где: Москва

Репутация: 2
Всего: 3



Цитата(Solomon @  22.11.2006,  22:23 Найти цитируемый пост)
что то немогу такого числа представить...

 smile Ты всегда так проверяешь?  smile 

anad, такого числа нет. Наиболее близкое число 1052.
Зависимость на графике.
user posted image
График не полностью представлен, дальше идет тоже самое с возрастающим (мягко говоря  smile ) расстоянием между максимумами.

Это сообщение отредактировал(а) AlexST - 23.11.2006, 12:50
PM MAIL ICQ   Вверх
Rockie
Дата 23.11.2006, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 13
Всего: 31



anad, не буду ничего добавлять к сказанному AlexST. Впрочем, отсутствие решения в определенном интервале это тоже ответ smile
Код
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void Move2(char* buff)
 { char temp_array[21] = "";            // создаем временный массив
   int length = strlen(buff);
   temp_array[0] = '2';                 // двойку в начало временного массива
   strncat(temp_array, buff, length );  // остальное дописываем
   temp_array[length] = '\0';           // и последнюю двойку удаляем
   strcpy(buff, temp_array);
 }


int main(){
 int range = 100000000;
 char buff[20] = "";

 for(int i=2;i<range;i+=10)
  {  sprintf(buff,"%i",i);               // число в строку
     Move2(buff);                        // перемещаем двойку в начало
     // выводим на экран, если число удвоилось
     if( atoi(buff)/2==i) printf("%s\n",buff); 
  }


  printf("Ok!\n");
  char c = getc(stdin);  

  return 0;
}


Это сообщение отредактировал(а) Rockie - 23.11.2006, 00:44


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
AlexST
Дата 23.11.2006, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 30.4.2006
Где: Москва

Репутация: 2
Всего: 3



Сам себя одурачил. 105263157894736842! Сказал же что мягко говоря крутой диапазон и не стал проверять дальше. Все пользуемся большим числом разрядов.  smile 
Да...., тому кто это придумал нечего было делать явно.  smile 
PM MAIL ICQ   Вверх
AlexST
Дата 23.11.2006, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 30.4.2006
Где: Москва

Репутация: 2
Всего: 3



Задачка чисто на логику, а я стал прогу делать сходу.  smile

Самое простое решение: "разматываем" большее число исходя из двойки в конце меньшего (у большего значит 4 в конце, а у меньшего она предпоследняя; отсюда 8 предпоследняя у большего и т.д.). 

Поскольку зависимость периодическая, то таких чисел бесконечно много к тому же (видно из графика).



Это сообщение отредактировал(а) AlexST - 23.11.2006, 13:26
PM MAIL ICQ   Вверх
Exception
Дата 23.11.2006, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: нет
Всего: 186



Помню, такая задачка была в "занимательной математике" Перельмана smile .
PM   Вверх
anad
Дата 25.11.2006, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 30.3.2006

Репутация: нет
Всего: нет



 Ну так как найти это число? 105263157894736842
PM MAIL   Вверх
Aloha
Дата 25.11.2006, 04:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
**


Профиль
Группа: Участник Клуба
Сообщений: 351
Регистрация: 14.5.2006

Репутация: 97
Всего: 165



anad

Числа, которые будут удовлетворять условию задачи – периодические.
Первое из них уже привел AlexST:
Код
105263157894736842

Следующие несколько чисел выглядят так:
Код
105263157894736842105263157894736842
105263157894736842105263157894736842105263157894736842
105263157894736842105263157894736842105263157894736842105263157894736842
105263157894736842105263157894736842105263157894736842105263157894736842105263157894736842

и т.д.
Вот код на VB, генерящий периодическую часть числа (его можно опробовать в любом MS Office’ном приложении):
Код
Sub s_Generate()
  Dim v_Digit As Integer, v_NextDigit As Integer, v_InMind As Integer, v_Str As String
  v_Digit = 1
  Do Until v_Digit = 5 And v_InMind = 0
    v_NextDigit = (2 * v_Digit) Mod 10 + v_InMind
    v_InMind = (2 * v_Digit) \ 10
    v_Str = CStr(v_NextDigit) & v_Str
    v_Digit = v_NextDigit
  Loop
  MsgBox "10" & v_Str
End Sub


Это сообщение отредактировал(а) Aloha - 25.11.2006, 08:03
PM   Вверх
Dov
Дата 25.11.2006, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 50
Всего: 88



Код
#include <stdio.h>
#include <conio.h>

int main()
{
    int  num = 2;
    int  x   = 2;

    while(x != 4)
    {
        x   = x % 2 * 10 + num;
        num = x / 2;
        printf("%d", num);
    }

    putchar('\n');
    getch();

    return 0;
}



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Dov
Дата 25.11.2006, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 50
Всего: 88



Или даже так
Код
#include <stdio.h>
#include <conio.h>

int main()
{
    int num;

    for(num = 2; num != 4; num = num / 2 + num % 2 * 10)
        printf("%d", num / 2);        

    printf("%d\nPress any key to quit...\n", num / 2);
    getch();

    return 0;
}



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
AlexST
Дата 25.11.2006, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 30.4.2006
Где: Москва

Репутация: 2
Всего: 3



Dov, Aloha вы б оставили комменты в прогах хоть. Не знаю как до anad, а до меня туго доходит.  smile 
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0576 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.