Informatică, întrebare adresată de alexanderdomnit, 8 ani în urmă

La problema #1212 (SumaPatrate) de pe pbinfo am folosit codul acesta si mi-a dat doar 30 de puncte.Vreun cod de 100 in c++ pls?Dau coroana!

#include

#include

using namespace std;


int n,i,suma,z;


int main() {

cin>>n;

for(i=1;i<=n;i++){

z=pow(i , 2);

suma=suma+z;

}

cout<
return 0;

}
p.s nu stiu ce era cu modulo


boiustef: modulo inseamna restul de la impartire la 10.234.573
boiustef: pow e o functie care recomendabil folosita numai cu exponent rational, adica real, deci iti poate da erori aici...

Răspunsuri la întrebare

Răspuns de boiustef
2

#include <iostream>

using namespace std;

int main()

{

   unsigned long long int N, S,f1,f2,f3;

   cin >> N;

   f1=N; f2=N+1; f3=2*N+1;

   if (f1%2==0) f1= f1/2;

   else f2 = f2 / 2;

   if (f1%3==0) f1 = f1 / 3;

   else if (f2%3==0) f2 = f2 / 3;

        else f3 = f3 / 3;

   S = ( ((f1*f2)% 10234573)*f3 ) % 10234573;

   cout << S << endl;

   return 0;

}



boiustef: nu dau explicatii la cod.... sper sa analizezi singur...
alexanderdomnit: ms must d etot
alexanderdomnit: mult de tot*
boiustef: bafta, sanatate si succese
boiustef: salut, azi sunt disponibil sa discutam la cod... cred ai inteles ca suma patratelor este egala cu n*(n+1)*(2*n+1)/6
boiustef: pentru valori mici ale lui n primeai rezultat bun, dar pt mari cred primeai gresit, valorile depaseau tipul int si cred primeai si depasiri de timp ca foloseai repetari....
rstrictiile era 1 ≤ N ≤ 2.000.000.000, deci clar ca tr de luat tipul long long
boiustef: sincer, m-am muncit multisor si eu la aceasta problema ... :))
Alte întrebări interesante