Cerința
Se dă un număr natural n
. Să se determine dacă numărul se poate scrie ca sumă de două numere triunghiulare.
Dacă este posibil se vor afișa două numere triunghiulare a căror sumă este egală cu n
, în orice ordine, respectiv mesajul NU
în caz contrar.
Un număr triunghiular este numărul de puncte dintr-un triunghi echilateral umplut uniform cu puncte. De exemplu, 1
, 3
, 6
, 10
, 15
sunt numere triunghiulare.
Date de intrare
Programul citește de la tastatură numărul n
.
Date de ieșire
Programul va afișa pe ecran, în orice ordine, două numere triunghiulare care însumate dau numărul n
, separate printr-un spațiu, sau mesajul NU
dacă numărul nu poate fi scris ca suma de două numere triunghiulare.
Restricții și precizări
n ≤ 10
12
;- numerele triunghiulare determinate pot fi identice.
Exemplul 1:
Intrare
24
Ieșire
3 21
Exemplul 2:
Intrare
15
Ieșire
NU
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema SumTriunghiular:
#include<bits/stdc++.h>
using namespace std;
void tri(unsigned long long n)
{
unordered_set<unsigned long long> tri;
unsigned long long i=1;
while(1)
{
unsigned long long x=i*(i+1)/2;
if(x>=n)
break;
tri.insert(x);
i++;
}
for(auto tm : tri)
if(tri.find(n-tm)!=tri.end())
{
cout<<n-tm<<" "<<tm;
exit(0);
}
cout<<"NU";
exit(0);
}
int main()
{
unsigned long long n;
cin>>n;
tri(n);
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #2904 SumTriunghiular
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2904 SumTriunghiular de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!