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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Юльчик\
0 / 0 / 0
Регистрация: 25.05.2011
Сообщений: 7
#1

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

26.05.2011, 15:13. Просмотров 357. Ответов 6
Метки нет (Все метки)

Даны натуральные числа n, а1 ..., an. Получить произведение членов последовательности а1, ..., an, удовлетворяющих условию 2^n<an<n!

Только не через массив, а цикл for

Помогите, пожалуйста, написать код. Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2011, 15:13     Последовательность
Посмотрите здесь:

Массив: Вставить в последовательность действительное число b так, чтобы последовательность осталась неубывающей. - C++
дана последовательность действительных чисел. вставить в нее действительное число b так, чтобы последовательность осталась неубывающей. ...

2. Дана целочисленная последовательность. Определить количество вхождений каждого числа в последовательность - Pascal
Написал программу var a,c:array of integer; count,i,p,u: integer; begin for i:=1 to 10 do begin read(p); a:=p; end;

Дана последовательность А1...А50. Получить новую последовательность, исключив отрицательные элементы - Pascal
Дана последовательность А1...А50. Получить новую последовательность, исключив отрицательные элементы

Считать последовательность цифр и преобразовать ее в последовательность соответствующих латинских букв - Pascal ABC
нужно чтобы 1-A 2-B 3-C 4-D и так до 26 латинских букв.

дана последовательность вещественных чисел а1,а2,.а15 Определить являеться ли последовательность упорядоченной по возрастанию - Pascal
дана последовательность вещественных чисел а1,а2,...а15 Определить являеться ли последовательность упорядоченной по возрастанию. В случае...

Проверить возрастает/убывает последовательность чисел и вывести начала/конец и саму последовательность - Pascal ABC
Условие в коментариях кода. Суть я понимаю, набросок кода сделал, но вот как сделать, чтобы определялось все нормально, а не так криво ,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
26.05.2011, 15:18     Последовательность #2
C++
1
2
3
4
int itog = 1;
for(int i = 0;i < n;++i)
if(pow(2,n)<a[i] && a[i] < n)
itog *= a[i];
Юльчик\
0 / 0 / 0
Регистрация: 25.05.2011
Сообщений: 7
26.05.2011, 15:44  [ТС]     Последовательность #3
Там n! (факториал)
Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
26.05.2011, 15:51     Последовательность #4
Цитата Сообщение от Юльчик\ Посмотреть сообщение
Там n! (факториал)
возьмите и исправьте что не нравится!
Юльчик\
0 / 0 / 0
Регистрация: 25.05.2011
Сообщений: 7
26.05.2011, 17:12  [ТС]     Последовательность #5
Вот именно, что запарка с этим факториалом, для него специальная функция нужна, а куда ее вставлять я не могу сообразить
Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
26.05.2011, 18:11     Последовательность #6
C++
1
2
3
4
5
6
7
int factorial(int num)
{
int p = 1;
for(int i = 1;i<(num+1);++i)
p *= i;
return p;
}
и перед циклом посчитайте значение фактрориала от н.присвойте это число какой нить переменной.

а в цикле где должен стоять факториал поставьте эту переменную
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2011, 19:03     Последовательность
Еще ссылки по теме:

Если последовательность упорядочена по неубыванию, то оставить ее без изменения, иначе получить последовательность an, an-1, ... , a1 - C (СИ)
Здравствуйте! Помогите пожалуйста переделать программу под язык Си с Паскаля! Дана последовательность действительных чисел a1, a2, ......

Дана последовательность,содержащая от 1 до 30 слов. Вывести эту же последовательность, удалив из нее повторные вхождения - C (СИ)
Дана последовательность,содержащая от 1 до 30 слов,в каждом из которых от 1 до 5 строчных латинских букв; Между соседними...

Если последовательность чисел а1..а12 упорядоченны по условию а1=<a2=<...=<a12, то оставить последовательность без изменений... - Turbo Pascal
Если последовательность чисел а1..а12 упорядоченны по условию а1=&lt;a2=&lt;...=&lt;a12, то оставить последовательность без изменений, а если нет,...

Для каждого из чисел, входящих в последовательность, выяснить, сколько раз оно входит в эту последовательность - C#
Помогите задачу написать на С#


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
diagon
Higher
1927 / 1193 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
26.05.2011, 19:03     Последовательность #7
Удивите препода
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 секунд думал... Ответ нескромный получился. Видимо ТС все-же что-то напутал с условием...)
Yandex
Объявления
26.05.2011, 19:03     Последовательность
Ответ Создать тему
Опции темы

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