demonishion1
1

Вычислить значение выражения n!+n^20

12.10.2014, 14:54. Показов 772. Ответов 12

Студворк — интернет-сервис помощи студентам
Вычислить n!+n^20 где n > 20 . Помогите пожалуйста
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.10.2014, 14:54
Ответы с готовыми решениями:

Вычислить значение выражения
l= pow(abs(pow(a,2) × pow(x,5)) 1/4)+ pow(tan(pow(x,2),2) - pow(atan(pow(x,3),2) Можете указать на...

Вычислить значение выражения
Вычислить: min2 (x + y +z/2, xyz) + 1

Вычислить значение выражения
Помогите пожалуйста написать программный код) Af^2+B(sqrt(f+1)), ...

Вычислить значение выражения
Собственно есть пример (на картинке): Картинка с примером: П.5.19.Правил Запрещено создавать...

12
719 / 710 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
12.10.2014, 16:02 2
В чем проблема, что не можете сделать?

1) Считываете n с клавиатуры.
2) Проверяете, что n > 20.
3) Считаете и выводите результат.

P.S. Я смотрю, вы тут первый раз, позвольте дать вам совет. Прочитайте правила форума и запомните главное: Вам рады будут помочь, но никто никогда не будет все делать за вас.
0
Модератор
Эксперт С++
13334 / 10635 / 6354
Регистрация: 18.12.2011
Сообщений: 28,408
12.10.2014, 16:11 3
DimanRu, Проблема в том, что значение не влезет в unsigned long long
1
4816 / 2276 / 287
Регистрация: 01.03.2013
Сообщений: 5,943
Записей в блоге: 27
12.10.2014, 16:25 4
Цитата Сообщение от demonishion1 Посмотреть сообщение
Помогите пожалуйста
Запросто. Давайте сюда ваше n, вычислю результат. Для примера, при n=53 результат будет 4274883284060025564298013753389399680275971079215018641463848989276401
1
719 / 710 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
12.10.2014, 16:38 5
zss, а можно по-подробнее? Я так понял, что на значение просто не хватит памяти, выделяемой под переменную. Программу я написал, и результат сходится с результатом _Ivana. Но содержит не все цифры числа.

P.S. В С++ недавно, в C# с такими проблемами не сталкивался....
0
Модератор
Эксперт С++
13334 / 10635 / 6354
Регистрация: 18.12.2011
Сообщений: 28,408
12.10.2014, 16:44 6
DimanRu, надо писать свою собственную длинную арифметику.
Т.е. хранить число в виде текстового массива произвольной длины и писать
функции сложения и умножения таких строк.
см. например
http://e-maxx.ru/algo/big_integer
1
719 / 710 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
12.10.2014, 16:48 7
Ну я уже, конечно, догадался, но спасибо!
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
12.10.2014, 19:24 8
Цитата Сообщение от zss Посмотреть сообщение
надо писать свою собственную длинную арифметику
Почему сразу писать свою собственную? Это совсем не обязательно, есть уже готовые средства. Есть boost, есть BigInteger, к примеру.
С использованием буста можно написать как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>
#include <boost/math/special_functions/factorials.hpp>
 
namespace mult = boost::multiprecision;
 
int main(int argc, char *argv[])
{
    int n;
    std::cin >> n;
    const int POWER = 20;
    
    mult::cpp_int number(n);
    mult::cpp_int p_n(mult::pow(number, POWER));
    mult::cpp_int fact(boost::math::factorial<double>(static_cast<double>(n)));
    
    std::cout << '\n' << p_n << " (Pow)\n+\n" << fact << " (Factorial)\n=\n" << p_n + fact << '\n';
}
0
4693 / 4389 / 379
Регистрация: 12.05.2012
Сообщений: 3,091
18.03.2015, 10:20 9
вариант Common Lisp:
Lisp
1
2
3
4
5
6
7
8
(defun n!+n^20 (n)
  (+ (factorial n) (expt n 20)))
 
(defun factorial (n)
   (if (zerop n) 1 (* (factorial (1- n)) n)))
 
> (n!+n^20 53)
4274883284060025564298013753389399680275971079215018641463848989276401
0
KOPOJI
18.03.2015, 19:36
  #10

Не по теме:

_sg, имхо, конечно, но здесь это несколько не в тему.. :pardon:

0
Заблокирован
Автор FAQ
18.03.2015, 21:41 11
demonishion1, если совсем просто
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main() {
    int n = 40;
    double fact   = n;
    double power  = n;
    for(size_t i = 1; i < n; i++)
    {
        fact *= i;
        if(i < 20)
        power*= n;
    }
    cout<<"n!   = "<<fact<<endl;
    cout<<"n^20 = "<<power<<endl;
    cout<<fact + power<<endl;
    return 0;
}
http://ideone.com/dg2ggA

Добавлено через 1 минуту

Не по теме:

Проверить факториал можно здесь http://math-prosto.ru/?page=pa... online.php

1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
18.03.2015, 22:09 12
-=ЮрА=-, "если совсем просто" - это для вычисления факториала в вашем "формате" воспользоваться формулой Стирлинга, например, а не с циклом.. Ну а степень "по-обычному".
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cmath>
 
int main(){
    long long n = 40;
    
    double fact = pow(M_E, -n) * pow(n, n) * sqrt(2 * n * M_PI);
    double power = pow(n, 20);
    
    std::cout << "n!   = " << fact << std::endl;
    std::cout << "n^20 = " << power << std::endl;
    std::cout << "n! + n^20 = " << fact + power << std::endl;
}
http://ideone.com/tWEuNe
0
Заблокирован
Автор FAQ
18.03.2015, 22:12 13
KOPOJI, имхо - это задание на логику для первого курса или даже старших классов школы - суть оптимальным образом организовать цикл + обычно запрещают использовать math.h
0
18.03.2015, 22:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.03.2015, 22:12
Помогаю со студенческими работами здесь

Вычислить значение выражения
Даны действительные числа s,t. Получить {h}^{4}(s-t,s+t)+h(1,1)+{h}^{2}(s-t,st), где...

Вычислить значение выражения
Помогите, мне задали лабораторную на дом. 1. Известны координаты вершин квадрата АВСD: А(x1,y1) и...

Вычислить значение выражения
Нужно было написать код Который должен был определённые числа посчитать и вывести нужный ответ ...

Вычислить значение выражения
Даны целые числа. Нужно вычислить при помощи массивов ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru