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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.61
Sokolov
42 / 42 / 3
Регистрация: 04.01.2011
Сообщений: 125
#1

Произведение чисел - C++

08.01.2011, 19:08. Просмотров 3801. Ответов 11
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Найдите наименьшее число n, чтобы произведение чисел от 2 до n делилось на 1992.
#include <iostream>
using namespace std;
int main(void)
{setlocale(LC_ALL,"Russian");
int n,a,pr=1;
for (n=0;n<1992;n++)
{pr=pr*(2+n);      
cout<<"#"<<n<<"---"<<pr<<endl;
        if(pr%1992==0)
        {cout<<"Ответ: "<<n<<endl;
        break;}}
        return 0;
}
Программа работает, пока позволяет диапозон значений типа int, но там получается очень большое число. Эту задачу я взял из олимпиады по математике 8 класса, поэтому там не могут быть такие числа. Помогите найти ошибку ))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2011, 19:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Произведение чисел (C++):

Проверить, что произведение отрицательных чисел массива больше, чем произведение нечетных чисел - C++
очередной раз, помогите пожалуйста Дан одномерный массив А, состоящий из целых чи¬сел. Если произведение отрицательных чисел массива...

Найти произведение всех положительных чисел массива, и количество отрицательных чисел - C++
Помогите, пожалуйста, с заданием по с++. Найти произведение всех положительных чисел массива {a i}, где i=1,2,...,13, и подсчитать...

Дано 10 действительных чисел. Определить количество, сумму и произведение отрицательных чисел - C++
Дано 10 действительных чисел. Определить количество, сумму и произведение отрицательных чисел.

Ввести целое число и набор из вещественных чисел, вывести сумму и произведение чисел из набора - C++
ввести целое число N (больше 0) и набор из N вещественных чисел вывести сумму и произведение чисел из данного набора

Если в последовательности из 3-х чисел есть число 7, вычислить произведение этих чисел; иначе - сумму - C++
Задача: Составить программу, в которой пользователь вводит с клавиатуры 3 числа. Если в последовательности из 3-х чисел есть число 7,...

В последовательности вещественных чисел подсчитать произведение чисел, кратных 3 - C++
В последовательности вещественных чисел подсчитать произведение чисел, кратных 3.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
FermA
10 / 8 / 2
Регистрация: 07.01.2011
Сообщений: 34
08.01.2011, 19:13 #2
Нет здесь ошибки, все правильно разве 32 сильно большое число?)))
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
08.01.2011, 19:13 #3
Вместо int long.
FermA
10 / 8 / 2
Регистрация: 07.01.2011
Сообщений: 34
08.01.2011, 19:18 #4
Да и кстати 1992 = 24 *83
83 простое то есть n>=83
А прозведение >= 83! = 3.94e+124 Вам никакой лонг не поможет
Sokolov
42 / 42 / 3
Регистрация: 04.01.2011
Сообщений: 125
08.01.2011, 19:18  [ТС] #5
Цитата Сообщение от FermA Посмотреть сообщение
Нет здесь ошибки, все правильно разве 32 сильно большое число?)))
когда будет 2*3*4*5*...*30*31*32
да это большое число, и дапозона значений не хватает, поэтому pr присваивается значение 0, что и приводит к выполнению условия 0%1992==0
FermA
10 / 8 / 2
Регистрация: 07.01.2011
Сообщений: 34
08.01.2011, 19:21 #6
2*3*4*5*...*30*31*32 не может делится на 1992

если эту задачу решать математически что в 100 раз проще чем программировать то ответ 83

Добавлено через 46 секунд
либо длинная арифметика но на 8 класс это перебор
Алексaндр
131 / 108 / 5
Регистрация: 04.12.2010
Сообщений: 313
08.01.2011, 19:21 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream.h>
main ()
{
     unsigned long int n, raz, fact;
     cout<<" n = ";
     fact=2;
     for (n=3; n<34; n++)
     {
         fact=fact*n;
         if (fact%1992==0) break;
     }
     cout<<fact<<" .";
     system("pause");
}
Произведение чисел от 2 до н - это тоже самое, что и факториал(н), который начинается с 2.
Выше - код программы, который у меня полу4ился. n<34; - такое условие поставил потому, что дальше факториал выходит за пределы типа unsigned long int.
как ни странно, у меня программа такого числа не нашла (
FermA
10 / 8 / 2
Регистрация: 07.01.2011
Сообщений: 34
08.01.2011, 19:24 #8
почему не нашла смотри пост №4

Добавлено через 1 минуту
кароч ответ 83 могу доказать, програмировать эту задачу - извращение
Алексaндр
131 / 108 / 5
Регистрация: 04.12.2010
Сообщений: 313
08.01.2011, 19:24 #9
Цитата Сообщение от FermA Посмотреть сообщение
если эту задачу решать математически что в 100 раз проще чем программировать то ответ 83
хотелось бы проверить... но за пределы дале4енько вылезает...
FermA
10 / 8 / 2
Регистрация: 07.01.2011
Сообщений: 34
08.01.2011, 19:26 #10
доказываю
любое число n<83 не подходит потому что n! не делится на 83 а соответсвенно на 1992

83 подходит поскольку 83! = 83 * 24 * все остальное = 1992 * все остальное что делиться на 1992
Sokolov
42 / 42 / 3
Регистрация: 04.01.2011
Сообщений: 125
08.01.2011, 19:29  [ТС] #11
а у типа long double же хватит диапозона значений, но с ним нельзя применять операцию %
может есть вариант заменить % ?
Алексaндр
131 / 108 / 5
Регистрация: 04.12.2010
Сообщений: 313
08.01.2011, 19:31 #12
ясно, вдуплился )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2011, 19:31
Привет! Вот еще темы с ответами:

Пофиксите баг? Найти произведение чисел последовательности, не делящихся на 5, наибольшее из таких чисел, и его номер - C++
Привет, форумчане! Помогите отладить программу? Что должна делать: &gt;Дана последовательность целых чисел {Aj} произвольной длины....

Дано 5 чисел вычислить произведение нечетных чисел - C++
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #pragma hdrstop #include...

Дана последовательность целых положительных чисел. Найти произведение только тех чисел, которые больше заданного числа М - C++
Дана последовательность целых положительных чисел. Найти произведение только тех чисел, которые больше заданного числа М. если таких нет,...

Запишите функцию для вычисления произведения целых чисел из диапазона от а до в. найдите произведение чисел, диапазон ввести с клавиатуры. В С++ - C++
Запишите функцию для вычисления произведения целых чисел из диапазона от а до в. найдите произведение чисел, диапазон ввести с клавиатуры....


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.01.2011, 19:31
Ответ Создать тему
Опции темы

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