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

Совершенное число. Задача - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ 1 простой вопрос про исходник со списком http://www.cyberforum.ru/cpp-beginners/thread414484.html
Здраствуйте программа такова , ввожу кол-во элементов допустим 5 далее ввожу элементы 1, 2, 3, 4, 5. Выбираю лист допустим 2 и программа закрывается Вот код мб я что то не то ввожу или делаю объясните пожалуйста зарание благодарен пишу в Borland c++ 5.02 #include <iostream.h> #include <stdlib.h>
C++ Двумерный массив векторов. Объявить и заполнить. как правильно объявлять и заполнять двумерный массив вектор в классах? struct Map { Map() { vMap.resize(MAX_Y, vector<char>(MAX_X)); for(int i=0; i<vMap.size(); ++i) vMap.push_back("OOOOOOOOOOOOOOOOOOOO"); } http://www.cyberforum.ru/cpp-beginners/thread414475.html
Проверьте код C++
Что я делаю не так? все?) Сформировать из cтолбцов матрицы В матрицу С, в которой столбцы расположены в порядке убывания модулей сумм их элементов. Матрицу первонач. выводит, затем модули сумм столбцов по отдельности, а дальше тьма. #include<iostream> #include<iomanip> #include<cmath> #include <math.h> #include <conio.h> using namespace std;
C++ C++. Компонентами файла являются действительные числа. Определить разность первой и последней компонент.
Помогите,пожалуйста, написать программу на C++. Компонентами файла являются действительные числа. Определить разность первой и последней компонент.
C++ C++.Подсчитать и вывести на печать сколько в тексте слов,состоящих из одной,двух,трех и т.д. букв. http://www.cyberforum.ru/cpp-beginners/thread414460.html
Помогите,пожалуйста,написать программу на C++. Подсчитать и вывести на печать сколько в тексте слов,состоящих из одной,двух,трех и т.д. букв.
C++ массив, сумма элементов. Дан массив из n эл. Найти сумму полож элементов,знач которых больше 4 Придумывайте своим темам более осмысленные названия. подробнее

Показать сообщение отдельно
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
22.12.2011, 14:43     Совершенное число. Задача
Сильно "в лоб". Уже на шестом совершенном числе, если его можно получить из числа, заменив в нём младшую цифру, ждать заканаемся. Но следует учесть, что шестое совершенное число - 8589869056, т.е. немаленькое.

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
#include <iostream>
#include <sstream>
#include <string>
#include <cmath>
 
typedef unsigned long long num_t;
 
num_t exchange_digit(num_t number, size_t pos, int digit)
{
    if (digit >= 10)
        return number;
 
    std::ostringstream ostr;
 
    ostr << number;
 
    std::string str_num = ostr.str();
 
    if (pos > str_num.length())
        return number;
 
    str_num[pos] = digit + '0';
 
    num_t new_number;
 
    std::istringstream(str_num) >> new_number;
 
    return new_number;
}
 
bool is_perfect(num_t number)
{
    num_t sum = 0;
 
    for (num_t div = number / 2 + 1; div >= 1; --div)
        if (number % div == 0)
            sum += div;
    
    return number == sum;
}
 
num_t to_perfect(num_t num)
{
    if (is_perfect(num))
        return num;
 
    int num_len = static_cast<int>(log(static_cast<double>(num)) / log(10.0) + 1.0);
 
    for (int pos = num_len - 1; pos >= 0; --pos)
    {
        for (int digit = 9; digit >= 0; --digit)
        {
            num_t change_num = exchange_digit(num, pos, digit);
 
            if (is_perfect(change_num))
                return change_num;
        }
    }
 
    return num;
}
 
int main()
{
    std::cout << to_perfect(8128) << std::endl;
    std::cout << to_perfect(1128) << std::endl;
    std::cout << to_perfect(8228) << std::endl;
    std::cout << to_perfect(8138) << std::endl;
    std::cout << to_perfect(8124) << std::endl;
    std::cout << to_perfect(8218) << std::endl;
 
    return 0;
}
 
Текущее время: 17:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru