[TEMA] calculați suma S=12+22+32+⋯+N2, modulo 10.234.573
Last Updated: May 08 2015 14:22, Started by
ChrystianSandu
, Apr 26 2015 17:00
·
0
#1
Posted 26 April 2015 - 17:00
Bun, am incerc rezolvarea problemei:
Quote
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 Am incerc rezolvarea, dar primesc doar 30 p pe ea. Am incercat si cu formule matematice, si tot nu merge, ce sa fac? #include <iostream> #include <cmath> #include <stdlib.h> 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; } Link problema: http://www.pbinfo.ro...12&force_reload |
#2
Posted 26 April 2015 - 17:13
Tu mai intai verifici daca suma este mai mare decat o anumita valoare , dupa care faci suma? )
|
#3
Posted 26 April 2015 - 17:31
incearca sa evite un eventual overflow pentru numere foarte mari, deci face bine ceea ce face
ar trebui totusi folosit un long int, pentru siguranta le: cu formule matematice e foarte simplu, dar se lucreaza cu numere cu foarte multe cifre S=12+22+32+⋯+N2 = (1 * 10 + 2) + (2 * 10 + 2) + (3 * 10 + 2) +...+ (10 * N + 2) = 10 * (1+2+3+...+N) + 2*N = 10 * N * (N+1)/2 + 2*N = 5*N*(N+1) + 2*N = N * (5*N + 7) Edited by _Smiley_, 26 April 2015 - 17:35. |
#4
Posted 26 April 2015 - 17:38
Eu nu înțeleg de ce scazi din n pe i, de ce faci pe i egal cu 1
@_Smiley_ este sumă de pătrate, N^2 nu N2 (N * 10 + 2). Edited by tavitu, 26 April 2015 - 17:42. |
#6
Posted 26 April 2015 - 20:03
cstdlib in loc de stdlib.h ...daca tot lucrezi in c++
apropo, foarte profund titlul , te-ai gandit sa scrii un roman cu titlul asta? |
#7
Posted 27 April 2015 - 07:06
_Smiley_, on 26 aprilie 2015 - 17:31, said:
incearca sa evite un eventual overflow pentru numere foarte mari, deci face bine ceea ce face ar trebui totusi folosit un long int, pentru siguranta le: cu formule matematice e foarte simplu, dar se lucreaza cu numere cu foarte multe cifre S=12+22+32+⋯+N2 = (1 * 10 + 2) + (2 * 10 + 2) + (3 * 10 + 2) +...+ (10 * N + 2) = 10 * (1+2+3+...+N) + 2*N = 10 * N * (N+1)/2 + 2*N = 5*N*(N+1) + 2*N = N * (5*N + 7) E atat de gresit, nici nu stiu de unde sa incep... Of... n*(n+1)*(2*n+1)/6 % 10234573, de fapt e 1^2 + 2^2 + 3^2 + ... + n^2, da... stiu, greseala mea... Edited by ChrystianSandu, 27 April 2015 - 07:09. |
#8
Posted 27 April 2015 - 07:09
ai putea incepe prin a specifica in mod corect enuntul problemei. pentru "ridicare la putere" se foloseste caracterul ^, asa cum a spus si tavitu
|
#9
Posted 30 April 2015 - 14:10
O functie recursiva pentru cerinta ta, nu prea inteleg faza cu modulo 10.234.573.. dar uitandu-ma la datele lui de intrare si datele lui de iesire constat ca este un sir de numere N si fiecare numar este ridicat la puterea a doua si facut suma sirului.
int suma(int n) { if(n==0) { return 0; } else { return suma(n-1)+n*n; } } Edited by MicuEmerson, 30 April 2015 - 14:21. |
#10
Posted 30 April 2015 - 14:27
Chiar si cu formula matematica pentru sigma i2, cel mai rau scenariu tot depaseste un intreg
particularitatea acestei probleme o impune modulo MicuEmerson, on 30 aprilie 2015 - 14:10, said:
O functie recursiva pentru cerinta ta, nu prea inteleg faza cu modulo 10.234.573.. dar uitandu-ma la datele lui de intrare si datele lui de iesire constat ca este un sir de numere N si fiecare numar este ridicat la puterea a doua si facut suma sirului. http://en.wikipedia....ular_arithmetic |
|
#11
Posted 08 May 2015 - 06:17
MarianG, on 30 aprilie 2015 - 14:27, said:
Chiar si cu formula matematica pentru sigma i2, cel mai rau scenariu tot depaseste un intreg particularitatea acestei probleme o impune modulo despre modulo ai citit? http://en.wikipedia....ular_arithmetic |
#13
Posted 08 May 2015 - 14:22
efectiv pierdere de vreme
imi pare rau c-am irosit timp aici ! wtf ? warn=rezolvare problema=postare problema cu rezolvare partiala adica WTF ? romania what the fuck nici macar sa-mi dezactivez contul nu pot !!! |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users