Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Связать две функции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужно вытянуть путь из переменной http://www.cyberforum.ru/cpp-beginners/thread1023010.html
Есть переменная CString ProcPath. В ней лежит путь и имя исполняемой программы. Мне нужно вытянуть из этой переменной путь. Если я пишу так: ProcPath = ProcPath.Left( ProcPath.ReverseFind( "\\" )...
C++ Массив содержит 2n чисел. Из суммы первых n его элементов вычесть сумму последних n элементов Алгоритм примерно такой: Создать и указать массив. Допустим человек вводит число 10. Значения указываются рандомно. Мне нужно из первых сложенных между собой значений отнять остальные 5 значений... http://www.cyberforum.ru/cpp-beginners/thread1023003.html
C++ C++ как осуществить поиск слов состоящих из букв более чем одного алфавита?
Задание: Найти слова содержащие символы из более чем одного из четырёх алфавитов: русских букв, латинских букв, цифр, символов (математических символов и знаков пунктуации). Пример SMS-ка ...
Тема диплома C++
Здравствуйте посоветуйте пожалуйста тему на диплом профессия называется Вычислительные машины и ПО
C++ Напишите пожалуста коментарии к программе, т.е. что каждая функция означает? http://www.cyberforum.ru/cpp-beginners/thread1022979.html
Напишите пожалуста коментарии к программе, т.е. что каждая функция означает? Программа звучит так "Цифры даннго трехзначного числа N являются членами арифмететической прогрессии". #include...
C++ Массивы структур Дан массив структур о магазинах: название, кол-во работников, профиль, а также 6 полей - прыбыль за 6 мес. В другой массив переписать сведения о магазинах, у которых профиль - продуктовый и для... подробнее

Показать сообщение отдельно
Brain_Dead
9 / 8 / 2
Регистрация: 25.09.2013
Сообщений: 35
29.11.2013, 21:33
Вот программа, которая перебирает отрезок с помощью рекурсии и функции "sd" и выводит на экран максимальную сумму делителей среди чисел, имеющихся на отрезке.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <conio.h>
#include <iostream>
 
using namespace std;
 
int sd(int n, int d = 1)
{
    if(n == 0)
    {
        return 0;
    }
    else
    {
        return d <= n ? (n % d == 0 ? d + sd(n, d + 1) : sd(n, d + 1)) : 0;
    }
}
 
int otrez(int min, int max)
{
    if(min == max)
    {
        return sd(min);
    }
 
    if(min == max - 1)
    {
        return sd(min) < sd(min+1) ? sd(min+1) : sd(min);
    }
 
    return sd(min) < otrez(min+1, max) ? otrez(min+1, max) : sd(min);
}
 
int main()
{
    int k = otrez(7, 11);
    cout << "k = " << k << endl;
 
    cout << "Press any key to exit\n";
    _getch();
    return 0;
}
Проверял отрезком (7, 11) - максимальная сумма делителей равна 18 (это сумма делителей числа 10).
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru