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

Быстрый поиск супернатуральных чисел - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти координаты четвертой вершины параллелограмма http://www.cyberforum.ru/cpp-beginners/thread962988.html
Привет всем. Вот задали совсем простенькую задачку: Известно, что точки с координатами (x1, y1), (x2, y2), (x3, y3) являются тремя вершинами некоторого параллелограмма. Найти координаты четвертой...
C++ Чёрный ящик или белый ящик Всем привет. Задали программу написать a + b и сумму вывести в файл, а птом протестировать либо на чёрный ящик, либо на белый ящик. Я лекции прочитал и инфу. в нете, вроде понял , а как писать не... http://www.cyberforum.ru/cpp-beginners/thread962982.html
C++ Как реализировать заполнение массива квадратами?
Я создал програму которая заполняет двумерный масив символами 35, а потом в рандомных местах создает прямоугольники символами 46, мне нужно чтобы все квадраты были связаны друг с другом линиями из...
Циклы для распечатки чисел C++
Циклы для распечатки чисел. В диалоговом режиме вводится некоторое число N (В диапазоне от 1 до 2000). Программа должна вывести числа, определенные заданием в виде нескольких колонок, выровненных по...
C++ перемешать массив http://www.cyberforum.ru/cpp-beginners/thread962963.html
Существует такой алгоритм как random_shuffle. Как сделать чтобы работал данный алгоритм в c++ windows forms?
C++ Разложение в ряд Помогите пожалуйста Функция Разложение в ряд Область сходимости подробнее

Показать сообщение отдельно
ya_noob
_
201 / 145 / 9
Регистрация: 08.10.2011
Сообщений: 432
27.09.2013, 22:37
решение, которое проходит все тесты вот тут: http://www.e-olimp.com/problems/6082
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
#include <cstdio>
#include <map>
using namespace std;
 
typedef char byte;
typedef map< int, byte > mymap;
typedef pair< int, byte > mypair;
 
mymap m;
 
byte calc( int n )
{
    if ( n == 1 ) return 1;
    if ( m.find( n ) != m.end() ) return m[ n ];
 
    int res = 0;
 
    for ( int i = 2, x; i <= 9; ++i )
    {
        x = n / i;
        if ( x * i == n )
        {
            if ( m.find( x ) != m.end() ) res += m[ x ];
            else res += calc( x );
        }
    }
    m.insert( mypair( n, res % 101 ) );
    return m[ n ];
}
 
int main()
{
    int n;
 
    scanf( "%d", &n );
    if ( n == 1 ) printf( "%d\n", 0 );
    else printf( "%d\n", calc( n ) );
 
    return 0;
}
и не спрашивайте почему при сохранении промежуточных результатов map не разрастается до гигабайта (например при n=230), сам не знаю

HedgehogLu, для n=24 количество супернатуральных чисел равно 17, а твоя прога выдает 30
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru