Problema #3188 Mate (pbinfo)

Cerința

Iarina a auzit la ora de matematica de numere triangulare.

Un numar se numeste triangular daca se scrie ca suma primelor k numere naturale. Doamna profesoara le-a propus sa rezolve pentru acasa urmatoarea problema: Determinati toate numerele triangulare care sunt patrate perfecte.

Iarina va roaga sa o ajutati sa rezolve aceasta problema: Se da o valoare n sa se afiseze primele n numere naturale triangulare care sunt patrate perfecte.

Date de intrare

Fișierul de intrare mate.in conține pe prima linie numărul n.

Date de ieșire

Fișierul de ieșire mate.out va conține numerele specificate in cerinta.

Restricții și precizări

  • 1 ≤ n ≤ 10

Exemplu

mate.in 2

mate.out 1 36

Explicație

În fișierul de intrare sunt afisate 2 numere care sunt atat numere triangulare cat si patrate perfecte.

Ne folosim de faptul ca numerele triunghiulare care sunt si patrate perfecte se calculeaza dupa urmatoarea formula recurenta:

n[0]=0

n[1]=1

n[k] = 34 * n[k-1] – n[k-2]+2;

formula recurenta de calcul

Rezolvare simpla folosind C++;



 

#include<fstream>

using namespace std;
ifstream cin("mate.in");
ofstream cout("mate.out");

long long ntpp(long long x) {
if (x==0) return 0;
if (x==1) return 1;
return 34 * ntpp(x-1) - ntpp(x-2)+2;
}

int main()
{
long long n; cin >> n;
long long i=0, j=1;
do{
cout<<ntpp(j)<<" ";
i++;j++;
}while(i<n);
cin.close(); cout.close();
return 0;
}
problemele interesante

Nimeni nu te poate opri sa te gandesti si la o alta solutie, tinand cont de faptul ca la precizarile speciale din textul problemei gasesti faptul ca n are un numar finit de valori.

#include <fstream>

using namespace std;
ifstream cin("mate.in");
ofstream cout("mate.out");

long long response[] = {1, 36, 1225, 41616, 1413721, 48024900, 1631432881, 55420693056,1882672131025, 63955431761796, 2172602007770041};

int main()
{
int n;cin>>n;
for (int i=0; i<n; i++) {
cout<<response[i]<<" ";
}

cin.close(); cout.close();
return 0;
}

Lasă un răspuns