Mi se pare o problema foarte interesanta... m-am prins dupa cateva exemple cam cum se face... insa nu stiu daca sunt foarte explicit. Daca scrii primele 20-30 de elemente pe o foaie o sa observi ca prima aparitie a unui numar i se va afla pe pozitia i(i-1)/2+i. De aici mai departe nici nu stiu cum sa iti explic
dar iti spun: scrie pe o foaie cateva numere si sigur o sa te prinzi. Uite un programel pe care l-am realizat eu, insa i se plimba de la 1 pana la 10^7 ( ii poti schimba tu valoarea).
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int n,p,i,j;
cout<<"p=";
cin>>p;
for(i=0;i<10000000;i++)
if(p==i*(i+1)/2)
cout<<"pe pozitia "<<p<<" se afla numarul "<<i;
for(i=0;i<10000000;i++)
for(j=1;j<=i;j++)
if(p==i*(i+1)/2+j)
cout<<"pe pozitia "<<p<<" se afla numarul "<<j;
}