Urgent si fara vectori va rog..
Cerinţa
Se consideră şirul 1, 2,1, 3,2,1, 4,3,2,1, ..., în care prima grupă este formată din numărul 1, a doua grupă este formată din numerele 2,1, …, a k-a grupă este formată din numerele k,k-1,...,2,1.
Pentru un număr natural dat n, să se determine al n-lea termen din şir.
Date de intrare
Programul citeşte de la tastatură numărul n
Date de ieşire
Programul va afişa pe ecran numărul x, reprezentând al n-lea termen din şir.
Restricţii şi precizări
1 ≤ n ≤ 1.000.000.000
Răspunsuri la întrebare
Răspuns de
5
#include<iostream>
#include<cmath>
using namespace std;
int main() {
long long n,k,d;
cin>>n;
d=1+8*n;
k=(-1+sqrt(d))/2;
if(k*(k+1)/2==n) cout<<1;
else{ k++; cout<<1+k*(k+1)/2-n; }
return 0; }
#include<cmath>
using namespace std;
int main() {
long long n,k,d;
cin>>n;
d=1+8*n;
k=(-1+sqrt(d))/2;
if(k*(k+1)/2==n) cout<<1;
else{ k++; cout<<1+k*(k+1)/2-n; }
return 0; }
Alte întrebări interesante
Matematică,
9 ani în urmă
Religie,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
using namespace std;
int main()
{
long n;
int x,f1=2,f2=3,nr=2,i;
cin>>n;
if (n==1) cout<<"1";
else
{
while (f1<n && f2<n)
{
f1=f1+nr; // cu while-u asta caut in ce grupa se afla numarul meu
f2=f2+nr+1;
nr++;
}
for (i=nr; i>=1; i--) // odata ce am gasit grupa observam ca fiecare grupa incepe cu nr grupei(ex pt nr=5 avem grupa de elemente 5 4 3 2 1)
{
if (f1==n){
x=i;} //stiu ca numarul meu e cuprins intre f1 si