393
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;
}
Comentarii