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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.61
Sokolov
 Аватар для Sokolov
42 / 42 / 3
Регистрация: 04.01.2011
Сообщений: 125
08.01.2011, 19:08     Произведение чисел #1
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     Произведение чисел
Посмотрите здесь:

В последовательности вещественных чисел подсчитать произведение чисел, кратных 3 C++
Дана последовательность целых положительных чисел. Найти произведение только тех чисел, которые больше заданного числа М C++
Запишите функцию для вычисления произведения целых чисел из диапазона от а до в. найдите произведение чисел, диапазон ввести с клавиатуры. В С++ C++
Пофиксите баг? Найти произведение чисел последовательности, не делящихся на 5, наибольшее из таких чисел, и его номер C++
Матрица.В матрице A(6; 6) найти произведение суммы четных чисел в 3-ей строке и суммы отрицательных чисел 1-го столбца C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
FermA
 Аватар для FermA
10 / 8 / 2
Регистрация: 07.01.2011
Сообщений: 34
08.01.2011, 19:13     Произведение чисел #2
Нет здесь ошибки, все правильно разве 32 сильно большое число?)))
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
08.01.2011, 19:13     Произведение чисел #3
Вместо int long.
FermA
 Аватар для 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
 Аватар для 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
 Аватар для 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ндр
 Аватар для Алекс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
 Аватар для FermA
10 / 8 / 2
Регистрация: 07.01.2011
Сообщений: 34
08.01.2011, 19:24     Произведение чисел #8
почему не нашла смотри пост №4

Добавлено через 1 минуту
кароч ответ 83 могу доказать, програмировать эту задачу - извращение
Алексaндр
 Аватар для Алексaндр
131 / 108 / 5
Регистрация: 04.12.2010
Сообщений: 313
08.01.2011, 19:24     Произведение чисел #9
Цитата Сообщение от FermA Посмотреть сообщение
если эту задачу решать математически что в 100 раз проще чем программировать то ответ 83
хотелось бы проверить... но за пределы дале4енько вылезает...
FermA
 Аватар для 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
 Аватар для Sokolov
42 / 42 / 3
Регистрация: 04.01.2011
Сообщений: 125
08.01.2011, 19:29  [ТС]     Произведение чисел #11
а у типа long double же хватит диапозона значений, но с ним нельзя применять операцию %
может есть вариант заменить % ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2011, 19:31     Произведение чисел
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Алексaндр
 Аватар для Алексaндр
131 / 108 / 5
Регистрация: 04.12.2010
Сообщений: 313
08.01.2011, 19:31     Произведение чисел #12
ясно, вдуплился )
Yandex
Объявления
08.01.2011, 19:31     Произведение чисел
Ответ Создать тему
Опции темы

Текущее время: 20:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru