Informatică, întrebare adresată de elena1216, 9 ani în urmă

Se dau n cifre . Calculati suma factorialelor acestor cifre.

Exemplu: n=3
4 2 1
=>27
(4!+2!+1!)
Multumesc!

Răspunsuri la întrebare

Răspuns de AntiEaglesDavids
2
#include <iostream>

int main()
{
    const int totalFacts = 21;
    long long factorials[totalFacts] {};

    factorials[0] = 1;
    for (int i = 1; i < totalFacts; ++i)
        factorials[i] = factorials[i - 1] * i;

    int n;
    long long s = 0;
    std::cin >> n;
    for (int i = 0, x; i < n; ++i) {
        std::cin >> x;
        s += factorials[x];
    }

    std::cout << s;
}


elena1216: eu sunt la inceput si nu am lucrat decat in c++,nivel de clasa a 9.Poti sa imi scrii asa ,te rog?
Răspuns de stassahul
3
#include <iostream>

using namespace std;

int n,x;
unsigned long long int S;

int main ()
{

    cin >> n;

    for(;n;n--)
    {
        cin >> x;
        unsigned long long int f=1;
        if(x>1) for(;x;x--) f*=x;
        S+=f;
    }

    cout << S;

    return 0;

}


stassahul: Pai astai nivel de clasa 9
elena1216: Vreau sa zic in stil clasic,daca intelegi
stassahul: Ce nu intelegi, in ceea ce am scris?
elena1216: Eu nu lucrez asa ,nu inteleg tot limbajul
elena1216: eu,de exemplu,scriu for(i=1;i<=n;i++)
elena1216: sau eu nu folosesc unsigned
elena1216: de aceea speram sa imi poti explica cum ai gandit,daca avem moduri diferite de a scrie programele
stassahul: for(;n;n--) este un mod mai usor si care nu foloseste memorie in plus, de a scrie for(i=1;i<=n;i++)
stassahul: unsigned trebuie ca numarul obtinut la final sa nu treaca de maxima
elena1216: Multumesc mult!
Alte întrebări interesante