Страница: 1 |
Страница: 1 |
Вопрос: помогите найти агоритмы!
Добавлено: 14.11.04 12:08
Автор вопроса: ashdan87 | Web-сайт:
Помогите! Мне нужны алгоритмы
А) перевода чисел из двоичной системы счисления в десятичную
Б) как можно разрезать число многозначное, целочисленное число n по однозначным цифрам. Т.е 123 на 1 2 3, причем чтобы тип переменных был Integer
В) Как сделать такое: найти сумму всех трехзначных чисел, обладающих следующими свойствами: 100а + 10в + с = (10 + в)*с, где 1<=a<=9, 0<=b<=9, 0<=c<=9
Г) написать прогу, которая расставляет на месте знака «?» знаки математических действий (+, -, *,/). Пример: (((((1?2)?3)?4)?5)?6) = 35
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
ISpy
Разработчик Offline Client
Вопросов: 47
Ответов: 621
Web-сайт:
Профиль | | #1
Добавлено: 14.11.04 12:25
А)Дели на 2.. (и вообще почитай что-нить по двоичной системе счисления)
Б)Переведи в строку, отрезай по одному числу и используя Val, суй полученные числа в массив integer, например.
Номер ответа: 2
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #2
Добавлено: 14.11.04 14:38
A)
Можно так поразрядно. Например,
5432109876543210 <- номера разрядов
1111000011110000 <- какое-то число
Чтобы перевести разряд из 2-ной в 10-ную умножай значение разряда на 2 в степени номер разряда (справа на лево).
Например число 1100 будет переводится так:
 2^0*0) + (2^1*0) + (2^2*1) + (2^3*1) = 0+0+4+8=12
3210 <- Номер разряда
1100 <- Число
Для проверки включи калькулятор в инженерном режиме и помедитируй.
Б)
Нужно знать самый большой разряд. В данном случае это сотни или 10^2
 im Source As Long, Result As Long
Source = 423
For ShowDigits = 2 To 0 Step -1
Result = (Source - (Source Mod 10 ^ ShowDigits))
MsgBox Result, , 10 ^ ShowDigits
Source = Source - Result
Next ShowDigits
В) и Г)
Ну это уже не к нам вопрос. Это скорее математика чем программирование. Сам считай.
Номер ответа: 3
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #3
Добавлено: 15.11.04 10:00
Г) Как-то около 4 лет назад в конференции СообЧа VB проводилась
олимпиада, с участием этой задачи. Задача на самом деле
примитивнейшая.
Первое место (считалось время выполнения кода) занял алгоритм с рекурсией.
Второе место - алгоритм с 5-ю сложенными циклами.
А я был молодой и глупый. Что такое рекурсия я еще не знал, а
использовать вложенные циклы не пришло в голову, поэтому сгромоздил
все в одном цикле и занял третье место, чем был очень доволен
В) Тут проще всего будет сделать 3 вложенных цикла по переменным a, b
и c, ИМХО.
Номер ответа: 4
Автор ответа:
Wolfrt
ICQ: 225421504
Вопросов: 8
Ответов: 60
Профиль | | #4
Добавлено: 21.12.05 21:09
не получится! Надо методом перебора решать!
Номер ответа: 5
Автор ответа:
Sergey
ICQ: 283551900
Вопросов: 1
Ответов: 74
Профиль | | #5
Добавлено: 21.12.05 22:41
Если b=9 и с=9 то (10+b)*с=171 тогда max=1 и учитывая задание 1<=a<=9 данное условие может удовлетворять только при a=1 мы получаем:
100+10*b+c=(10+b)*c
Sub Main()
Dim I, S As Integer
S = 0
For I = 0 To 99
'(I \ 10)->b
'(I Mod 10)->c
If 100 + I = (10 + (I \ 10)) * (I Mod 10) Then S += 100 + I
Next
Console.WriteLine(S)
End Sub
Ответ S=0
В) Тут проще всего будет сделать 3 вложенных цикла по переменным a, b
и c, ИМХО.
А можно и одним!