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

Последовательность - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Получить новую матрицу путем умножения всех элементов данной матрицы на ее наименьший по модулю элемент http://www.cyberforum.ru/cpp-beginners/thread305427.html
Получить новую матрицу путем умножения всех элементов данной матрицы на ее наименьший по модулю элемент
C++ Программа тестирования, не могу разобрать свои косяки :(. Добрый день. очень нужна помощь. Стояла задача написать программу тестирования, корорая подсчитывает баллы за правильные ответы через ООП. Код который написал ниже. Дальше косяк, не знаю что делать. Во первых, не могу разобраться с функциями гет и гетлайн и тп. :( необходимо чтобы вывелся вопрос, варианты ответов. после того как в веду ответ должен вывестись следующий вопрос с вариантами... http://www.cyberforum.ru/cpp-beginners/thread305426.html
Получить новую матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю элемент C++
Получить новую матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю элемент
Найти, сколько отрицательных элементов содержит данная матрица в каждом столбце C++
Найти, сколько отрицательных элементов содержит данная матрица в каждом столбце
C++ Последовательность http://www.cyberforum.ru/cpp-beginners/thread305416.html
Даны натуральные числа n, а1 ..., an. Получить произведение членов последовательности а1, ..., an, удовлетворяющих условию 2^n<an<n! Пожалуйста, помогите написать код. Спасибо.
C++ Найти, сколько положительных элементов содержит данная матрица в каждой строке Найти, сколько положительных элементов содержит данная матрица в каждой строке подробнее

Показать сообщение отдельно
diagon
Higher
1921 / 1187 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
26.05.2011, 19:03     Последовательность
Удивите препода
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
#include <stdio.h>
#include <iostream>
#include <sstream>
#include <vector>
#define base 1000000000
short compare(std::vector<int> a, std::vector<int> b){
    if (a.size() < b.size()) return 2;
    if (a.size() > b.size()) return 1;
    for (int i=a.size()-1; i >=0; --i){
        if(a[i] < b[i]) return 2;
        if(a[i] > b[i]) return 1;
    }
    return 0;
  }
void writelong(std::vector<int> vec){
    printf ("%d", vec.empty() ? 0 : vec.back());
    for (int i=(int)vec.size()-2; i>=0; --i)
        printf ("%09d", vec[i]);
}
std::vector<int> smult(std::vector<int> a, int b){
    int carry = 0;
    for (size_t i=0; i<a.size() || carry; ++i) {
        if (i == a.size())
            a.push_back (0);
        long long cur = carry + a[i] * 1ll * b;
        a[i] = int (cur % base);
        carry = int (cur / base);
    }
    while (a.size() > 1 && a.back() == 0)
        a.pop_back();
    return a;
}
std::vector<int> lmult(std::vector<int> a, std::vector<int> b){
    std::vector<int> c(a.size()+b.size());
    for (size_t i=0; i<a.size(); ++i)
        for (int j=0, carry=0; j<(int)b.size() || carry; ++j) {
            long long cur = c[i+j] + a[i] * 1ll * (j < (int)b.size() ? b[j] : 0) + carry;
            c[i+j] = int (cur % base);
            carry = int (cur / base);
    }
    while (c.size() > 1 && c.back() == 0)
        c.pop_back();
    return c;
}
void inc(std::vector<int> &a){
    a.back()++;
    if (a.back()>base) {
        long x=a.size();
        a.clear();
        a.resize(x+1);
        a.back()=1;
    }
}
int main(){
    int n;
    std::cin >> n;
    std::vector<int> a(1,1);
    for (int i = 1; i <= n; i++)
        a=smult(a,i); //a-факториал
    std::vector<int> b(1,2);
    for (int i=1; i<n; i++)  //b-2^N
            b=smult(b,2);
    std::vector<int> result(1,1);
    for (;;){
        inc(b);
        if (compare(a,b)==0) break;
        result=lmult(result,b);
    }
    writelong(result);
    return 0;
}
Правда я проверял только при n=4, так что за полную работоспособность не ручаюсь.
P.S. Если я правильно понял задание, то результат влезет в целые типы только при n=4 >_>

Добавлено через 8 минут
При n=8 g++ 50 секунд думал... Ответ нескромный получился. Видимо ТС все-же что-то напутал с условием...)
 
Текущее время: 15:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru