Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2011, 22:25   #1
Рон99
Пользователь
 
Регистрация: 10.06.2011
Сообщений: 20
По умолчанию Задача. Найти число.

Помогите решить задачу.
В 3-х значном числе зачеркнули первую цифру слева, когда полученное число умножили на 7 получилось исходное число. Найти это число.
Рон99 вне форума Ответить с цитированием
Старый 01.10.2011, 22:32   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Первую цифру слева трехзначного числа можно получить разделив (div) его на 100.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 01.10.2011, 23:43   #3
Рон99
Пользователь
 
Регистрация: 10.06.2011
Сообщений: 20
По умолчанию

А как делать дальше?
Рон99 вне форума Ответить с цитированием
Старый 01.10.2011, 23:48   #4
9i.
Форумчанин
 
Регистрация: 29.09.2011
Сообщений: 103
По умолчанию

можете сделать методом перебора, в цикле от 100 до 999 проверять равняется ли остаток от деления на 100 умноженный на 7 счетчику цикла, если да вывести это число
9i. вне форума Ответить с цитированием
Старый 02.10.2011, 00:19   #5
Рон99
Пользователь
 
Регистрация: 10.06.2011
Сообщений: 20
По умолчанию

спасибо огромное)
Рон99 вне форума Ответить с цитированием
Старый 02.10.2011, 02:29   #6
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от 9i. Посмотреть сообщение
можете сделать методом перебора,
Можно, да, но только тут не нужно получения цифры делением:
Код:
for i:=1 to 9 do
  for j:=0 to 99 do 
    if i*100+j = 7*j then Writeln(i*100+j);
Но можно обойтись без такого громадного перебора, попробовав его уменьшить..
Допустим, первая цифра исходного числа есть a. Тогда число
x = 100*a + b
- тут b - это число без первой цифры.

Записываем равенство:
100*a + b = 7*b

100*a = 6*b

b = 100*a / 6 = 50*a / 3

Поскольку b - целое, то a должно делиться на 3. Таких цифр только 4:
0, 3, 6, 9
Решение с a=0 тривиальное, число 000 по сути и не трехзначное вовсе - отбрасываем.
Берем a=3, тогда
b = 50*3/3 = 50
Так что первый ответ такой: x = 350
Берем a=6, тогда
b = 50*6/3 = 100
Это выходит за пределы двузначных чисел (а b должно быть двузначным).
Таким образом,
x = 350.

Ой, я, кажется, забыл про прогрпммирование.. sorry..
Попробую исправить эту мою ошибку )).
Начинаю с места, где перебираем цифры: 3, 6, 9.

Код:
for i:=1 to 3 do 
  if 3*i*100+50*i = 7*50*i then Writeln(3*i*100+50*i);
Вот так. Надеюсь, не ошибся.. ))
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 02.10.2011, 10:52   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
for i:=1 to 3 do 
  if 3*i*100+50*i = 7*50*i then Writeln(3*i*100+50*i);
Вот так. Надеюсь, не ошибся.. ))
в принципе, не ошиблись.
Но этот код выдаёт помимо правильного ответа ещё два неверных:
Цитата:
Код:
350
700
1050
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.10.2011, 22:26   #8
Рон99
Пользователь
 
Регистрация: 10.06.2011
Сообщений: 20
По умолчанию

TinMan- предпочитаю на ты.

Я так же предпочитаю на ты, спасибо тебе огромное очень помог
Рон99 вне форума Ответить с цитированием
Старый 04.10.2011, 11:47   #9
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
в принципе, не ошиблись.
Но этот код выдаёт помимо правильного ответа ещё два неверных:
Спасибо, Серж (добавляю палочку в список..))
Все же ошибся - не в циферках, а в логике. Надо же еще проверять b на двузначность..
Вот так:
Код:
for i:=1 to 3 do 
  if (3*i*100+50*i = 7*50*i) and (50*i<100) then
    Writeln(3*i*100+50*i);
Но только.. второе условие на самом деле есть i<2, и это зарубает цикл на корню.. (я не решился это условие писать там в таком виде)) В цикле остается одно значение i=1. Баста.

Короче - задача была на программирование, и не надо тут философствовать )). Начало моего предыдущего поста было по делу, остальное следует считать флудом со всеми вытекающими.. каюсь ))
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти максимальное число в последовательности vladoscom93 Паскаль, Turbo Pascal, PascalABC.NET 11 14.12.2010 21:43
Найти байтс наибольшим числом единиц и найти байт с наибольшим чилом нулей. Найти разность число единиц м Beren42 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 14.12.2010 17:44
Найти число KillJoy Фриланс 9 18.03.2010 16:42
Найти число по условию. нютафффффф Паскаль, Turbo Pascal, PascalABC.NET 7 19.10.2009 08:51
Найти и вывести все слова,у котоpых число гласных букв пpевышает число согласных. Briz Помощь студентам 2 11.05.2008 00:56