Форум программистов, компьютерный форум, киберфорум
Наши страницы
Алгоритмы
Войти
Регистрация
Восстановить пароль
 
andrey_sax
0 / 0 / 0
Регистрация: 13.02.2018
Сообщений: 2
1

Закон Ома

13.02.2018, 18:47. Просмотров 342. Ответов 5
Метки нет (Все метки)

Задача: Найти количество способов (как параллельно, так и последовательно) соединить два резистора(R1, R2) с целым положительным сопротивлением так, чтобы сопротивление схемы равнялось целому числу R.

Ограничение по времени: 1 секунда

Входные данные: число http://www.cyberforum.ru/cgi-bin/latex.cgi?1 \leq  R \leq  10^9

Выходные данные: Искомое число способов.

Например: для 6 - ответ: 8. Пояснение: последовательно можно соединить резисторы с сопротивл. 1 и 5, 2 и 4, 3 и 3; параллельно: 7 и 42, 8 и 24, 9 и 18, 10 и 15, 12 и 12. Всего 8.

Очевидно, что кол-во способов последовательного соед. это R/2. Осталось эффективно посчитать кол-во для параллельного соединения, у меня есть алгоритм работающий за http://www.cyberforum.ru/cgi-bin/latex.cgi?O(R), но в 1 секунду не укладываюсь. Помогите найти эффективное решение.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2018, 18:47
Ответы с готовыми решениями:

Есть некий математический закон, по которому можно описать замерзание воды
Привет всем. Хочу сделать фрактал замерзания воды. Есть голубой экран. Я указал точку - откуда...

задачи по темам: постоянный ток, закон Ома,несколько ЭДС в одной цепи, закон Джоуля-ленца
ПОМОГИТЕ, ПОЖАЛУЙСТА, РЕШИТЬ ЗАДАЧИ ПО ФИЗИКЕ!!! Тема: Постоянный ток. Сопротивление проводника. ...

закон Ома.
Составить программу, контролирующую знание закона Ома. Обучающий вводит формулу закона Ома в...

Закон Ома
Найти токи и напряжения на всех участках, если приложенное напряжение U=280 в. R1= 20 Ом, R2= 60...

Закон Ома
Вобщем программа должны вычислять ток, напряжение, сопротивление по формуле: . Эти величины...

5
Ромаха
236 / 128 / 27
Регистрация: 16.12.2012
Сообщений: 579
Записей в блоге: 1
Завершенные тесты: 1
13.02.2018, 21:23 2
Спорим, что человек, прочитавший тему и не знающий закон ома, забьет и не пойдет гуглить (а если потратит 30 секунд на поиск ничего путного не найдет (и снова забьет))
Так что уважайте чужое время - коли осознаете как получается 7 и 42 и прочие - объясните логику. Сразу (мне) она не ясна. А разбираться в тонкостях богомерзкой (для меня) физики - ой как не хоцца
0
andrey_sax
0 / 0 / 0
Регистрация: 13.02.2018
Сообщений: 2
13.02.2018, 21:39  [ТС] 3
Знаю. Глупо поступил. "Закон ома" это название олимпиадной задачи и отношения к самой сути задания вообще не имеет (вопрос к составителю задачи). Но лучше найти название для темы я не придумал(

Последовательное соединение : R = R1 + R2
Параллельное соединение: 1/R = 1/R1 + 1/R2

Теперь, надеюсь ,все ясно.
0
Shamil1
Модератор
2234 / 1522 / 346
Регистрация: 26.03.2015
Сообщений: 5,412
14.02.2018, 01:34 4
Количество параллельных соединений зависит только от количества простых множителей и их степеней. Но общую формулу с ходу вывести не удалось. Поэтому предлагаю два варианта.

1.
Выписываем все простые сомножители.
Например, для 18 = 2, 3, 3
Из них всеми возможными способами выбираем две группы.
Для 18: 2,3,3 и -; 2,3 и 3; 3,3 и 2; 2,3 и -; 3,3 и -; 2 и -; 3 и -; - и -; Всего 8 уникальных вариантов. Это и есть ответ.
(Можно уникальность проверять делением произведения большей группы на меньшую, считая пустую группу за 1. Результат деления равен R1/R2)

2.
Выписываем все простые сомножители. Откладываем в сторону те, которые встречаются 1 раз. Остальные заменяем на самые маленькие простые числа (чтобы их произведение было как можно меньше). Перемножаем и вычисляем ответ для получившегося числа (проверяя все варианты от R+1 до 2R). Это a0. ai+1 = 3ai - 1. Вычисляем an, где n - это количество отложенных множителей. Это и есть ответ.
(То есть, для получения a0 считаем степени всех множителей, сортируем по убыванию, возводим 2 в первую, 3 во вторую, 5 в третью и так далее)
Например, для 99 = 3*3*11: считаем для числа 4, получаем 3. 3*3-1 = 8.
Для числа 248430 = 7*7*13*13*2*3*5: считаем для числа 2*2*3*3, получаем 13. 13*3-1=38. 38*3-1=113. 113*3-1=338.


з.ы. Расчёты не проверял. Мог где-нибудь ошибиться.
0
Ромаха
236 / 128 / 27
Регистрация: 16.12.2012
Сообщений: 579
Записей в блоге: 1
Завершенные тесты: 1
14.02.2018, 06:15 5
Тогда и от меня вариант
C++
1
2
3
4
5
6
7
8
9
10
11
ll f;
    cin >> f;
 
    ll p = f+1, k = 0;
    double q = f*p*1.0/(p-f);
    while(p <= q) {
        if (f*p%(p-f) == 0 && f*p/(p-f) >= p) k++;
        p++;
        q = f*p*1.0/(p-f);
    }
    cout << k << endl;
Добавлено через 55 минут
Ах да, еще есть замечательный сайтик. Если просчитать первые члены и вбить в поиск - то будет вам счастье тыц
1
Shamil1
Модератор
2234 / 1522 / 346
Регистрация: 26.03.2015
Сообщений: 5,412
14.02.2018, 11:02 6
Цитата Сообщение от Ромаха Посмотреть сообщение
х да, еще есть замечательный сайтик. Если просчитать первые члены и вбить в поиск - то будет вам счастье тыц
По ссылке есть формула:
If n = (p1^a1)(p2^a2)...(pt^at), a(n) = ((2*a1 + 1)(2*a2 + 1) ... (2*at + 1) + 1)/2.
0
14.02.2018, 11:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2018, 11:02

Закон Ома
Написать программу, которая, используя Закон Ома, вычисляет силу тока, напряжение или сопротивление...

Закон Ома
Нужно записать закон Ома для активной ветви. Вопрос в том, как правильно записать e(t)? Как E...

Закон ома
Чему равна разность потенциалов между клеммами в схеме? Что покажет амперметр если его подключить к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru