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

Найти все совершенные числа от M до N - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Не работают проекты. Ошибка "Tracker.exe is missing" http://www.cyberforum.ru/cpp-beginners/thread1237707.html
в vs 2012 все проекты не работают из-за ошибки (Ошибка 1 error : Required file "tracker.exe" is missing. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppCommon.targets 347 5 greg) в проекте всего один файл(gferg.cpp), пустой проект, настройки проекта и студии не менял, не работает ни один проект, в чём проблема? #include <iostream> using namespace std; int main() {...
C++ Как экспортировать интерфейс из dll делал всё по примеру в инете, не работает код интерфейса struct I_MyInterface { virtual bool Init(int parms)=0; virtual bool Release()=0; virtual void DoStuff() =0; }; http://www.cyberforum.ru/cpp-beginners/thread1237692.html
C++ Настройка debugger'a в codeblocks
Когда я ставлю брекпоинт и нажимаю на кнопку "debug" компилятор не останавливается на брекпоинте, а просто выполняет программу. Подскажите, что не так?
Перегрузка оператора + C++
не получается в своем классе перегрузить оператор + :( пишет "error C2804: бинарный "operator +" имеет слишком много параметров", действительно задал 2 параметра, но как еще то? ведь + и подразумевает собой сложение 2х значений...
C++ Как грамотно подключать заголовочные файлы? http://www.cyberforum.ru/cpp-beginners/thread1237648.html
Как грамотно подключать заголовочные файлы? Можно ли их все собрать в stdafx.h а потом инклюдить там где они мне нужны? А то сейчас получается, в одном .h объявил переменную с типом класса который описан в другом .h и посыпались ошибки.
C++ Алгоритм добавления элемента в сортированный список Нужно придумать алгоритм для добавления элемента в сортированный список(STL list<char>), то есть этот алгоритм должен сравнивать введенный элемент с уже имеющимися элементами в списке и встать в нужное место. Я думал организовать алгоритм с помощью бинарного поиска, но возникает вопрос, как определить итератор на центр списка. подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2807 / 1583 / 248
Регистрация: 03.05.2010
Сообщений: 3,693
03.08.2014, 09:34     Найти все совершенные числа от M до N
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/////////////////////////////////////////////////////////////////////////////////////////
//СОВЕРШЕННЫЕ ЧИСЛА
//(Время: 1 сек. Память: 16 Мб )
//Число называется совершенным, если оно равно сумме всех своих делителей, меньших его самого. 
//Требуется найти все совершенные числа от M до N.
//ВХОДНЫЕ ДАННЫЕ
//
//Входной файл INPUT.TXT содержит числа M и N, разделенные пробелом. (1 <= M <= N <= 5*10^18)
//
//ВЫХОДНЫЕ ДАННЫЕ
//
//В выходной файл OUTPUT.TXT выведите по одному числу в строке в порядке возрастания все 
//совершенные числа, находящихся на отрезке [M, N]. В том случае, когда таких чисел нет 
//следует вывести «Absent».
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iostream>
#include <iterator>
#include <set>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string     T_str;
typedef long long       T_int;
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::set<T_int>    T_int_set;
/////////////////////////////////////////////////////////////////////////////////////////
void    print_perfect_numbers_from_to
        (
            T_int   min,
            T_int   max
        )
{
    T_int_set  perfect_numbers;
 
    perfect_numbers.insert( 6                   );
    perfect_numbers.insert( 28                  );
    perfect_numbers.insert( 496                 );
 
    perfect_numbers.insert( 8128                );
    perfect_numbers.insert( 33550336            );
    perfect_numbers.insert( 8589869056          );
 
    perfect_numbers.insert( 137438691328        );
    perfect_numbers.insert( 2305843008139952128 );
 
    auto    min_val_it  =   perfect_numbers.lower_bound( min );
    auto    max_val_it  =   perfect_numbers.upper_bound( max );
 
    if  (
            min_val_it  ==  max_val_it
        )
    {
        std::cout   <<  "Absent"
                    <<  std::endl;
    }
    else
    {
        std::copy
            (
                min_val_it,
                max_val_it,
                std::ostream_iterator<T_int>( std::cout, "\n" )
            );
    }//else
}
/////////////////////////////////////////////////////////////////////////////////////////
void    print_prompt_and_input_val_in_segment
            (
                T_str   const   &   prompt,
                double          &   val,
                T_int               left_bound,
                T_int               right_bound
            )
{
    do
    {
        std::cout   <<  prompt;
        std::cin    >>  val;
    }
    while   (
                    val             <   left_bound
                ||  right_bound     <   val
            );
}
/////////////////////////////////////////////////////////////////////////////////////////
int     main()
{
    T_int     const   MIN_BOUND_VAL   =   1;
    T_int     const   MAX_BOUND_VAL   =   T_int (
                                                    5 * pow( 10.0,  18.0 )
                                                );
 
    std::locale::global(std::locale(""));
 
    for(;;)
    {
        std::cout   <<  std::endl
                    <<  std::endl
                    <<  std::endl;
 
        std::cout   <<  "Введите границы отрезка ("
                    <<  MIN_BOUND_VAL
                    <<  ".."
                    <<  MAX_BOUND_VAL
                    <<  "):"
                    <<  std::endl;
 
        double     min =   0;
 
        print_prompt_and_input_val_in_segment
            (
                "min = ",
                min,
                MIN_BOUND_VAL,
                MAX_BOUND_VAL
            );
 
        double     max =   0;
 
        print_prompt_and_input_val_in_segment
            (
                "max = ",
                max,
                T_int( min ),
                MAX_BOUND_VAL
            );
 
        print_perfect_numbers_from_to
            (
                T_int( min ),
                T_int( max )
            );
    }//for
}
 
Текущее время: 01:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru