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

Задача Делители (divisors) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Итеративный поиск в глубину http://www.cyberforum.ru/cpp-beginners/thread370774.html
Здравствуйте! Вопрос связан с поиском в графе. Меня интересуют идеи решения или ссылка на литературу. Пожалуйста, подскажите... Пусть даны 4 числа (пусть это a , b, c, d) и еще одно число ( пусть будет p ). Можно ли, используя основные математические операции (сложение, вычитание, деление и умножение) получить число p из чисел a , b, c, d? При чем данные числа a , b, c, d можно...
C++ Поясните задачу Прошу разъяснить в задачи непонятные мне аспекты. Задача Прямоугольник, стороны которого выражены натуральными числами M и N (1≤M, N ≤10000), разделен на квадраты размером 1*1. Найти число квадратов, пересекаемых диагональю прямоугольника (пересекает только тогда, когда делит его на две произвольные части). Решение Будем считать, что N (ось х) больше чем M (ось у). В противном случае... http://www.cyberforum.ru/cpp-beginners/thread370756.html
Русский ввод и русский вывод C++
Я знаю, что для того, чтобы был виден русский язык, я использую команду setlocale(LC_ALL,"Russian") Для того, чтобы в переменные заносились русские символы, у меня получается только тогда, когда я не использую выше сказанную команду. Как-нибудь можно использовать русский ввод и вывод вместе?? Например: string a; cin >> a; cout << "Ваше имя: " << a; // Ваше имя Саша
3 в 1 C++
Добрый вечер. Нужно написать программу ,находящую максимальный элемент и его номер.Затем найти произведение от первого 0ля до 2го нуля.И третье преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в нечётных позициях, а во второй половине-элементы стоявшие в чётных позициях. первую задачу я сделал, 2ую на половину.Если вместо нулей вписать любую...
C++ Коды символов одной и той же буквы различаются. [help] http://www.cyberforum.ru/cpp-beginners/thread370737.html
тоесть если я делаю cout<<int('а'); где а-русская, он выводит код -32. И так до я -1; а если char c; cin>>c; cout<<int(c) и вводить русскую а, он выводит код -94. Проблема в кодировке? Что делать?
C++ протабулируйте функции. на C++ протабулируйте функции. Отрезок и шаг вводятся с клавиатуры: e^x-arctg(x) подробнее

Показать сообщение отдельно
koka3000
11 / 11 / 3
Регистрация: 02.02.2011
Сообщений: 211
22.10.2011, 19:57     Задача Делители (divisors)
Делители (divisors)
Определите, какое из первых n натуральных чисел имеет наибольшее количество делителей.

Входные данные
Единственная строка входного файла divisors.in содержит число n.

Выходные данные
В выходной файл divisors.out выведите число, что среди первых n натуральных (чисел
от 1 до n) имеет наибольшее количество делителей. Если одинаковое максимальное количество
делителей имеют сразу несколько чисел, выведите наименьшее из них. Известно, что n НЕ
превышает 1 000 000.

Пример входного файла: 7
Пример выходного файла: 6

Пример входного файла: 20
Пример выходного файла: 12

Ссылки для второго примера
Каждое из чисел от 1 до 20 имеет не более 6 делителей. Хотя 6 делителей имеет сразу 3
числа из этого промежутка - 12, 18 и 20, наименьшим из них является 12. Его и надо вывести.


Вот мое ришение (без вывода в файл, просто сам смысл):

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
#include <iostream>
 
using namespace std;
 
struct Dvv {
    int namber;
    int div;
};
 
 
int main()
{
    int n;
    struct Dvv bigger;
    bigger.namber = 1;
    bigger.div = 1;
    int buffD;
    //n = 100000;
    cin >> n;
 
    for(int i = 2; i <= n; i++)
    {
        buffD = 2;
        for(int j = 2; j < i; j++)
        {
            if(i%j == 0)
                buffD++;
        }
        if(bigger.div < buffD)
        {
            bigger.namber = i;
            bigger.div = buffD;
        }
    }
        cout << bigger.namber << endl;
    return 0;
}
Дело в том, что "n НЕпревышает 1 000 000". При вводе 999 999 программа ОЧЕНЬ долго вычисляет резулятать (<=10min). Я пытался вычислить какуе-то закономерность между числами и количество делителей, но не вышло.

Помогите найти другое решение задачи, чтобы при максимальном n (999999) программа не вычисляла ответ 10мин.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru