0 / 0 / 0
Регистрация: 20.04.2013
Сообщений: 14
|
|
1 | |
Найти числа, запись которых совпадает с последними цифрами их квадрата. VBA20.04.2013, 20:41. Показов 3512. Ответов 19
Метки нет (Все метки)
Здравствуйте. Задача звучит следующим образом:
Дано натуральное число n. Среди чисел 1....n найти все такие, запись которых совпадает с последними цифрами записи их квадрата (как, например 6^2 - 36,25^2 = 625 и т.д.) Всей группой решали и сошлись на мнении, что мы нубы. Заранее благодарю.
0
|
20.04.2013, 20:41 | |
Ответы с готовыми решениями:
19
Среди чисел 1, ..., n найти такие, запись которых совпадает с последними цифрами записи их квадратов Найти такие числа, запись которых совпадает с последними цифрами записи их квадрата Найти числа, запись которых совпадает с последними цифрами их квадрата Найти числа, запись которых совпадает с последними цифрами их квадрата |
20.04.2013, 20:58 | 2 |
Нубы ещё даже не зародились, а решение уже было: Среди чисел 1…n найти все такие, запись которых совпадает с последними цифрами их квадрата — устроит?
0
|
0 / 0 / 0
Регистрация: 20.04.2013
Сообщений: 14
|
|
21.04.2013, 00:03 [ТС] | 3 |
Sasha_Smirnov, да, спасибо. Но, можно узнать, какие составные части мне нужны помимо commandbutton и textbox?
0
|
0 / 0 / 0
Регистрация: 20.04.2013
Сообщений: 14
|
|
21.04.2013, 16:00 [ТС] | 5 |
Sasha_Smirnov, ясное дело, но вот что есть ' s="" '? И куда же мне вводить число? На что кликать и т.п. Спасибо.
Добавлено через 8 минут Sasha_Smirnov, всё, большое спасибо, разобрался. Добавлено через 6 минут Но, я всё никак не пойму, что есть ' s="" '
0
|
21.04.2013, 19:29 | 6 | |||||
Автор присваивает строке s значение пустой строки. Но это и по умолчанию так.
Вот менее расфуфыренный вариант, с учётом умолчаний.
0
|
0 / 0 / 0
Регистрация: 20.04.2013
Сообщений: 14
|
|
21.04.2013, 21:34 [ТС] | 7 |
Sasha_Smirnov, большое спасибо
Добавлено через 11 минут И ещё, если Вам не будет трудно, объясните, пожалуйста, что есть right, CStr и Len.
0
|
15151 / 6424 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
||||||
22.04.2013, 00:50 | 8 | |||||
Velociraptor, спросите у VBA - поставьте курсор в любое их этих слов и нажмите F1.
И букварь почитайте: Учебники, справочники, самоучители Добавлено через 4 минуты В посте #6 неверно, надо
1
|
22.04.2013, 01:02 | 9 | |||||
Надо-то кому?.. Код работает! А честный пионер тогда и в MsgBox сунул бы этот "конвертер":
0
|
22.04.2013, 03:01 | 10 | |||||
Кстати, на порядок мощнее (хотя и непонятнее) вот такой код Visual Basic:
0
|
15151 / 6424 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
|
22.04.2013, 11:42 | 11 |
Сообщение было отмечено как решение
Решение
Без CStr
Код
1 ~ 1 625 ~ 390625 9376 ~ 87909376 Код
1 ~ 1 5 ~ 25 6 ~ 36 25 ~ 625 76 ~ 5776 376 ~ 141376 625 ~ 390625 9376 ~ 87909376 90625 ~ 8212890625 Дело в том, что если i объявлено как Long, то Len(i)=4 независимо от значения. И в этом случае надо преобразовывать в строку тем или иным способом. Если объявить i как Variant, преобразовывать в строку не обязательно, бейсик сделает это сам.
1
|
22.04.2013, 19:04 | 12 | |||||
Да, спасибо, Казанский, в NumTales действительно VB всё сделал сам!
Правда, там одна маленькая недоделка... Зато мощь! Не по теме: Вот чёрт дёрнул меня что-то объявить как Long! Уж удлинять так удлинять!!! Добавлено через 1 час 13 минут Вот верный (и быстрый)
0
|
25.04.2013, 00:47 | 13 |
Максимальное автоморфное число* от ВБА (рис. 1), увы, меркнет на фоне оного от Си (рис. 2):
______________ * ru.wikipedia.org/wiki/Автоморфное_число (см. по правой кнопке, выделив ссылку)
0
|
0 / 0 / 0
Регистрация: 20.04.2013
Сообщений: 14
|
|
25.04.2013, 10:26 [ТС] | 14 |
Sasha_Smirnov, большое спасибо. Но чем проще - тем лучше)
0
|
25.04.2013, 17:06 | 15 | |||||
Проще уже было — в начале темы, а тут уже в почёте мощь и красота! А также и Веселуха (#13), который реально помог немного упростить:
0
|
23.05.2013, 01:38 | 17 | |||||
0
|
Модератор
|
||||||
23.05.2013, 12:26 | 18 | |||||
Сообщение было отмечено как решение
Решение
Вот достаточно простой код (правда - для не слишком больших чисел):
1
|
Телекомпания ВИD
1364 / 115 / 19
Регистрация: 14.10.2012
Сообщений: 100
|
|
24.05.2013, 07:33 | 19 |
Сообщение было отмечено как решение
Решение
Конкурс по оптимизации все равно выиграю я.
1. Быстродействие алгоритма Саши Смирнова увеличено почти в 2 раза (11.04 сек -> 6.27 сек). Для простоты API не использовались. 2. Мой алгоритм считает за сотую долю секунды, причем он особо и не оптимизирован (лень), но здесь итак всё ясно... 3. Используя его на строках, возможно за несколько секунд получить, например, числа до 1500 знаков (также приведены). При желании, можно и сразу с помощью сабклассинга прикрутить прямой вызов машинного кода к VBA через указатель на его расположение в памяти, хотя и так быстро работает, да и лень. 4. А вообще разговоры об оптимизации можно вести бесконечно. 5. Таймер Timer - убогий и неточный. Плюс многие условия не соблюдаются. Но для этого конкурса сойдет...
2
|
24.05.2013, 15:19 | 20 |
anny05, сам-то юзаю StopWatch, но здесь писал код, (условно)понятный и домохозяйке!
Спасибо за возведение темы в научную степень! И красоту.
0
|
24.05.2013, 15:19 | |
24.05.2013, 15:19 | |
Помогаю со студенческими работами здесь
20
Циклы: Найти числа, запись которых совпадает с последними цифрами записи квадрата Найти такие числа запись которых совпадает с последними цифрами записи их квадрата Найти все натуральные числа меньше заданного, запись которых совпадает с последними цифрами их квадрата Найти все натуральные числа меньше заданного, запись которых совпадает с последними цифрами их квадрата Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |