Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Imprimanta ciss rezista perioade ...

Garmin fēnix 7 / PRO / Saphi...

Care sunt cele mai mari regrete a...

Alfa Romeo Stelvio 2.2 jtd
 Intrebari srl nou

La multi ani @AndReW99!

Alegere masina £15000 uk

TVR vrea sa lanseze o platforma d...
 Strategie investie pe termen lung...

Modulator FM ptr auto alimentat p...

orange cablu f.o. - internet fara...

Robinet care comuta traseul
 A fost lansata Fedora 40

Samsung S24 plus

Imi iau un Dell? (Vostro vs others)

Abonati Qobuz?
 

[TEMA] calculați suma S=12+22+32+⋯+N2, modulo 10.234.573

- - - - -
  • Please log in to reply
12 replies to this topic

#1
ChrystianSandu

ChrystianSandu

    Junior Member

  • Grup: Junior Members
  • Posts: 38
  • Înscris: 06.04.2015
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
stefanutz13

stefanutz13

    Member

  • Grup: Members
  • Posts: 742
  • Înscris: 04.12.2011
Tu mai intai verifici daca suma este mai mare decat o anumita valoare , dupa care faci suma? :))

#3
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,026
  • Înscris: 24.02.2006
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
tavitu

tavitu

    Minune: HE a început să emită facturile!

  • Grup: Senior Members
  • Posts: 5,598
  • Înscris: 16.02.2009
Eu nu înțeleg de ce scazi din n pe i, de ce faci pe i egal cu 1 și de ce adaugi la sumă pe i la pătrat?

@_Smiley_ este sumă de pătrate, N^2 nu N2 (N * 10 + 2).

Edited by tavitu, 26 April 2015 - 17:42.


#5
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,438
  • Înscris: 10.08.2005
Si nu exista formula pentru sigma i2

#6
VladBtz

VladBtz

    Active Member

  • Grup: Members
  • Posts: 1,702
  • Înscris: 24.09.2014
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
ChrystianSandu

ChrystianSandu

    Junior Member

  • Grup: Junior Members
  • Posts: 38
  • Înscris: 06.04.2015

View Post_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
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,026
  • Înscris: 24.02.2006
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
MicuEmerson

MicuEmerson

    New Member

  • Grup: Junior Members
  • Posts: 4
  • Înscris: 30.04.2015
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
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,438
  • Înscris: 10.08.2005
Chiar si cu formula matematica pentru sigma i2, cel mai rau scenariu tot depaseste un intreg
particularitatea acestei probleme o impune modulo

View PostMicuEmerson, 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.
despre modulo ai citit?
http://en.wikipedia....ular_arithmetic

#11
ChrystianSandu

ChrystianSandu

    Junior Member

  • Grup: Junior Members
  • Posts: 38
  • Înscris: 06.04.2015

View PostMarianG, 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
Nu inteleg ce vrei sa spui....

#12
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,438
  • Înscris: 10.08.2005
Ai gasit formula pentru sigma i2?

#13
__vlad__

__vlad__

    New Member

  • Grup: Junior Members
  • Posts: 5
  • Înscris: 07.05.2015
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

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate