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

Cerința

Fiind dat N, un număr natural nenul, calculați suma S=12+22+32+⋯+N2, modulo 10.234.573.

Date de intrare

Programul citește de la tastatură numărul N.


Date de ieșire

Programul va afișa pe ecran numărul S, modulo 10.234.573.


Restricții și precizări

1 ≤ N ≤ 2.000.000.000

Exemplu

Intrare
4
Ieșire
30

Rezolvare:
#include

using namespace std;

int main()
{ unsigned long long N,S;
cin>>N;

S=(N*(N+1)*(2*N+1))/6;


cout<

return 0 ;
}

Problema este ca imi da doar 50 de puncte nu stiu de ce? Va rog ajutati-ma!


andriesboss92: Ce numar are problema?
panthalassa: #1212
grigore2018: Am incercat asa dar nu prea merge : )
grigore2018: #include
#include
#include
using namespace std;
int main()
{
int n, sum = 0;
cin >> n;
for (int i=1; i<=n; i++)
{
if (sum >= 10234573)
{
sum %= 10234573;
n -= i;
i = 1;
}
sum += i*i;
}
cout << sum;
return 0;
}
panthalassa: Mersi ,dar imi da doar 30 de puncte cu rezolvarea asta...Am nevoie de o rezolvare de 100 de puncte .

Răspunsuri la întrebare

Răspuns de laurstefan2002
0

#include<iostream>

using namespace std;

int main()

{

long long n,m,r,a,b,c,rez;

cin>>n;

m=10234573;

r=n%6;

switch(r)

{

case 0: a=(n/6)%m;

b=(n+1)%m;

c=(2*n+1)%m;

break;

case 1: a=n%m;

b=((n+1)/2)%m;

c=((2*n+1)/3)%m;

break;

case 2: a=(n/2)%m;

b=((n+1)/3)%m;

c=(2*n+1)%m;

break;

case 3: a=(n/3)%m;

b=((n+1)/2)%m;

c=(2*n+1)%m;

break;

case 4: a=(n/2)%m;

b=(n+1)%m;

c=((2*n+1)/3)%m;

break;

case 5: a=n%m;

b=((n+1)/6)%m;

c=(2*n+1)%m;

break;

}

rez=(a*b)%m;

rez=(rez*c)%m;

cout<<rez;

return 0;

}


laurstefan2002: E de 100p!
Alte întrebări interesante