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

Să se scrie un program care citește numărul natural n și determină suma S=1+1*2+1*2*3+...+1*2*...*n.

Programul afișează pe prima linie a ecranului mesajul Rezultatul este S, unde S reprezintă suma calculată

Am facut asa si mi-a dat 80 p
#include

using namespace std;

int main()
{
int n,S=0;
cin>>n;
for(int i=1;i<=n;i++)
{
int P=1;
for (int j=1;j<=i;j++)
P=P*j;
S=S+P;
}
cout<<"Rezultatul este"<<" "< return 0;
}

Poate cineva sa-mi dea o solutie de 100p si simpla?


NuPotSaStiuTot: Ce este 80P si 100p? nu inteleg. Program merge pana 17. Dupa 17 int S este prea mic pentru a conține valoarea. Cu long long int merge pana 23. Atunci cu int nu merge.
Darius1502: Pe pbinfo exista un evaluator care evalueaza problemele de la 0p la 100 p, si la aceasta problema mi-a dat doar 80p, multumesc pt sfatul cu long, dar cati de long pot pune maxim?
NuPotSaStiuTot: Am facut un mic program, ca spune pt n=100, resultat S = 94269001683709979260859834124473539872070722613982672442938359305624678223479506023400294093599136466986609124347432647622826870038220556442336528920420940313
NuPotSaStiuTot: nu conosc pbinfo evaluator. Poate ca are un limit de cifre 80p = 119 cifre, 100p = 158 cifre

Răspunsuri la întrebare

Răspuns de rossetta
1
Poți sa folosești doar int sau long long. Nu poți sa folosești mai mulți de long.

NuPotSaStiuTot: Am scris un program, cu fiecare număr exprimat într-o array, și am scris + și * ca funcții în array. Cu număr nelimitat de ciferi.
magdaudragosp1p0b1: #include <iostream>
using namespace std;
long long p=1,n;
int main()
{cin>>n;
for (int i=1;i<=n;i++){
p*=i;

}

cout<<p;
return 0;
}
magdaudragosp1p0b1: Trebuie doar sa le declari cu long long, pentru cazurile cand n factorial este mai mare decat limita pana la care ajung variabilele de tip int.
Alte întrebări interesante