Cerința
Ana a calculat suma numerelor naturale mai mici sau egale cu n
, iar Andreea suma numerelor naturale mai mici sau egale cu m
. Doamna de mate a calculat apoi diferenţa celor două sume şi a obţinut rezultatul S
.
Pentru o valoare S
dată, aflaţi toate perechile (n,m)
, cu n>m
, scriindu-le în ordine descrescătoare după n
astfel încât doamna de mate să obţină rezultatul S
.
Date de intrare
Fișierul de intrare sumagauss2.in
conține pe prima linie numărul S
.
Date de ieșire
Fișierul de ieșire sumagauss2.out
va conține pe linii diferite perechile (n,m)
, cu n>m
, în ordine descrescătoare după n
.
Restricții și precizări
1 ≤ S ≤ 2.000.000.000
Exemplu
sumagauss2.in
10
sumagauss2.out
10 9 4 0
Explicație
Avem ( 0+1+2+...+10 )-( 0+1+2+...+9 )=10
, respectiv (0+1+2+3+4)-0=10
.
#include <bits/stdc++.h> using namespace std; ifstream fin("sumagauss2.in"); ofstream fout("sumagauss2.out"); int main() { long long s , sq , aux , n , m , d , s2; fin >> s; s2 = s * 2; for(d = 1; d * d <= s2; d++) { if(s2 % d == 0) { aux = d + s2 / d - 1; if(aux % 2 == 0) { n = aux / 2; m = n - d; fout << n <<" " << m <<endl;; } } } return 0; }