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

Счастливые билеты - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ оператор выбора http://www.cyberforum.ru/cpp-beginners/thread380331.html
Элемент равнобедренного прямоугольного треугольника пронумерованы следущим образом : 1- катет a, 2- гипотенуза c=a* sqrt(2), 3- высота h, опущенная на гипотенузу (h=c/2), 4- площадь S=c*h/2. Дан номер одного из этих элементов и его значение. Вывести значение остальных элиментов (в том же порядке)
C++ "Поймать" сообщение от LISTBOX Рассматриваю тут пример в книге и вот почему-то он у меня срабатывать не хочет - не могу изменять масштаб в диалоговом окне так как он тупо вообще не выбирается, может стиля какого не хватает при создании диалогового окна, или ещё чего, подскажите пожалуйста. Собственно main.h (константы и объявления функций) #define MI_OPEN 101 #define MI_EXIT 102 #define MI_SETTINGS 103 #define ID_DOTS... http://www.cyberforum.ru/cpp-beginners/thread380328.html
C++ произведение элеменов массива, расположенных после максимального по модулю элемента
здравствуйте!помогите пожалуйста решить задачу: в одномерном массиве состоящем из n веществ.элементов вычислить: 1)кол-во элементов массива,больших С 2)произведение элеменов массива, расположенных после максимального по модулю элемента
Создать массив, каждый элемент которого содержит сумму делителей элементов исходного массива C++
с клавиатуры вводится масив. создать новый массив в который каждый соответствующий элемент будет содержать сумму делителей соответствующих элементов из первого массива. массив ввела как дальше. #include"stdafx.h" #include<stdio.h> #include<conio.h> int main() { int x,n,i,a,k=1,j; printf("Vvedite kolichestvo elementov massiva n: ");
C++ стоп-программа http://www.cyberforum.ru/cpp-beginners/thread380277.html
Наверное, я не первый, но все же помогите новичку, как застопорить консольное окно с выведенными результатами, иначе оно сразу закрывается, а создавать новую переменную и добавлять каждый раз в конце кода std::cin >> k, уже надоело...
C++ Компилятор Visual Studio Посоветуйте хороший компилятор Visual Studio по таким требования: Одним словом что бы на диске С его компоненты не занимали больше 500MB Добавлено через 31 минуту Просто у нас препод говорить что лучшей компилятор Visual Studio 6.0 C++ подробнее

Показать сообщение отдельно
diagon
Higher
1927 / 1193 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
10.11.2011, 08:00     Счастливые билеты
Нет, у меня где-то есть баг, ответ выдает неверный. Доделаю, когда ******** заработает, а то мне тестировать не на чем.

Добавлено через 1 час 15 минут
Написал свою длинку с блекджеком и прочим.
Должно работать, но не помешало бы протестировать =\ А ******** до сих пор лежит.
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
#include <iostream>
#include <vector>
#include <cmath>
#include <sstream>
#include <string>
#include <iomanip>
#include <cstdlib>
 
class BigInteger
{
protected:
 
    std::vector<int> value;
    static const int base = 1e9;
    static const int count_of_digits = 9;
    
public:
 
    BigInteger();   
    BigInteger( const std::string& );
    BigInteger( long long );
    
    BigInteger& operator = ( const BigInteger& );
    BigInteger& operator += ( const BigInteger& );
    BigInteger& operator *= ( const BigInteger& );
    
    friend BigInteger operator + ( const BigInteger&, const BigInteger& );
    friend BigInteger operator * ( const BigInteger&, const BigInteger& );
    
    friend std::istream& operator >> ( std::istream&, BigInteger& );
    friend std::ostream& operator << ( std::ostream&, const BigInteger& );
};
 
 
typedef BigInteger bigInt;
typedef std::vector< std::vector< bigInt > > matrix_t;
 
int main()
{
    int n;
    std::cin >> n;
    
    if ( n % 2 != 0 || n < 2 )
    {
        std::cerr << "Incorrect input!\n";
        return EXIT_FAILURE;
    }
    
    n /= 2;
    
    matrix_t dinamic(n + 1, std::vector< bigInt > (n * 9 + 1) );
    
    /* dinamic[i][j] - количество i-значных билетов с суммой цифр, равной j */
    
    /* количество однозначных билетов с суммой цифр i (0 <= i <= 9) равно 1 */
    for (int i = 0; i <= 9 ; ++i)
        dinamic.at(1).at(i) = 1; 
        
    for (int i = 2; i <= n; ++i)
    {
        for (int j = 0; j <= i * 9 ; ++j)
        {
            for ( int k = 0 ; k <= std::min( j, 9 ) ; ++k)
            {
                dinamic.at(i).at(j) += dinamic.at(i - 1).at(j - k);
            }
        }
    }
    
    bigInt answer = 0;
    
    for (int i = 0 ; i <= n * 9  ; ++i)
        answer += dinamic.at(n).at(i) * dinamic.at(n).at(i);
        
    std::cout << answer;
}
 
BigInteger::BigInteger( const std::string& str )
{
    for (int i = str.length() ; i > 0 ; i -= count_of_digits)
    {
        if ( i < count_of_digits )
        {
            value.push_back( atoi( str.substr(0, i).c_str() ) );
        }
        else
        {
            value.push_back( atoi( str.substr(i - count_of_digits, count_of_digits).c_str() ) );
        }
    }
}
 
BigInteger::BigInteger()
{
    value.push_back(0);
}
 
BigInteger::BigInteger( long long x )
{
    std::ostringstream ost;
    ost << x;
    std::string str = ost.str();
    
    for (int i = str.length() ; i > 0 ; i -= count_of_digits)
    {
        if ( i < count_of_digits )
        {
            value.push_back( atoi( str.substr(0, i).c_str() ) );
        }
        else
        {
            value.push_back( atoi( str.substr(i - count_of_digits, count_of_digits).c_str() ) );
        }
    }
    
}
 
BigInteger& BigInteger::operator += ( const BigInteger& b )
{
    for ( int temp = 0, i = 0; i < (int) std::max( this->value.size(), b.value.size() ) || temp != 0 ; ++i)
    {
        if ( i == (int) value.size() )
            value.push_back( 0 );
        
        value[i] += temp + ( i < (int) b.value.size() ? b.value[i] : 0 );
        temp = value[i] >= base;
        
        if ( temp != 0 )
            value[i] -= base;
    }
    
    return *this;
}
 
BigInteger operator + ( const BigInteger& a, const BigInteger& b )
{
    BigInteger c = a;
    c += b;
    return c;
}
 
std::istream& operator >> ( std::istream& stream, BigInteger& big )
{
    std::string str;
    std::cin >> str;
    big = BigInteger(str);
    
    return stream;  
}
 
std::ostream& operator << ( std::ostream& stream, const BigInteger& big )
{
    if ( big.value.empty() )
        stream << 0;
    else
        stream << big.value.back();
        
    for (int i = (int) big.value.size() - 2; i >= 0; --i)
    {
        stream << std::setfill('0') << std::setw(BigInteger::count_of_digits) << big.value[i];
    }
    
    return stream;
}
 
BigInteger& BigInteger::operator = ( const BigInteger& big )
{
    this->value = big.value;
    
    return *this;
}
 
BigInteger operator * ( const BigInteger& a, const BigInteger& b )
{
    BigInteger c;
    c.value.resize( a.value.size() + b.value.size() );
    
    for (int i = 0; i < (int) a.value.size(); ++i)
    {
        for (int j = 0, carry = 0 ; j < (int) b.value.size() || carry != 0 ; ++j)
        {
            long long cur = c.value[i + j] + a.value[i] * 1ll * ( j < (int) b.value.size() ? b.value[j] : 0 ) + carry;
            
            c.value[i + j] = int( cur % BigInteger::base );
            
            carry = int ( cur / BigInteger::base );         
        }   
    }
    
    while ( c.value.size() > 1 && c.value.back() == 0 )
    {
        c.value.pop_back();
    }
    
    return c;
}
 
BigInteger& BigInteger::operator *= ( const BigInteger& big )
{
    BigInteger a = *this;
    *this = a + big;
    return *this;
}

Не по теме:

Час всего ушел х) Я думал часа 3 уже пишу, не меньше.



P.S. ассимптотика решения - http://www.cyberforum.ru/cgi-bin/latex.cgi?O({n}^{2})

Добавлено через 12 часов 17 минут
******** заработал - Accepted
0.08 на самом большом тесте работает
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru