Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Problema clasa 9 intensiv  (Citit de 3654 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
motanel97
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« : Octombrie 14, 2013, 22:03:28 »

Am o problema care zice ca se da un sir de nr de genu' 1, 1,2, 1,2,3 , 1,2,3,4 etc... si se citeste un nr N de la tastatura.Sa se scrie al N-lea numar din sirul de mai sus.
EX: pentru n=3 sa se afiseze 2 pentru n=6 sa se afiseze 3.
Mi-am batut capu 2 ore la ea si nu inteleg ce sa ii fac...ma puteti ajuta cu niste sfaturi sau instructiuni? direct in c++
Memorat
PlayLikeNeverB4
Nu mai tace
*****

Karma: 212
Deconectat Deconectat

Mesaje: 721



Vezi Profilul
« Răspunde #1 : Octombrie 14, 2013, 22:13:16 »

Pai generezi sirul si cand ai ajuns la al N-lea element te opresti. Daca ai probleme la generarea sirului, ai nevoie doar de x=pana la cat merge secventa curenta (pentru 1,2,3, x=3) si la al catelea element esti.
Memorat
rares96cheseli
Client obisnuit
**

Karma: 45
Deconectat Deconectat

Mesaje: 60



Vezi Profilul
« Răspunde #2 : Octombrie 14, 2013, 22:25:55 »

Asa iti generezi termenii sirului
Cod:
#include <iostream>
using namespace std;

int main()
{
    int n;
    cin>>n;
    for (int i=1; i<=n; ++i)
        for (int j=1; j<=i; ++j) cout<<j<<' ';

    return 0;
}

Memorat
motanel97
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #3 : Octombrie 16, 2013, 21:57:05 »

Nu merge generat asa pentru ca siru este gata generat cum s'ar zice..adica nu se citeste un N pentru generarea sirului si dupa sa mearga pana la N...sirul este asa pana la infinit iar eu trb sa gasesc elementu N care poate fi si 1512 Confused?
Memorat
AlexandruValeanu
Vorbaret
****

Karma: 29
Deconectat Deconectat

Mesaje: 167



Vezi Profilul
« Răspunde #4 : Octombrie 16, 2013, 22:20:07 »

O sa incerc sa-ti explic pe exemplu si te prinzi tu de generalizare. In primul rand se observa ca ai grupe de 1,2,3,4,...m,... elemente deci poti afla in ce grupa se afla al n-elea cautat.
Deci N = 6 si cauti grupa de forma x*(x+1)/2 = N.
x*(x+1)/2 = 6;
x2 + x - 12 = 0;
x1,2 = (-1 +- rad(49))/2
Tu ai nevoie doar de solutia pozitiva deci x = (-1+7)/2 = 3.
Rezulta ca N se afla in grupa a treia...deci are 2 grupe in fata. Astfel poti determina pozitia sa in grupa scazand din el cate elemente se afla inaintea lui in sir adica 2*3/2 ( = nr_grupe*(nr_grupe+1)/2 ). Deci 6 - 3 = 3 rezultatul cautat. Sper ca ai inteles cat de cat cum se rezolva. Succes!
Memorat
Broke
Strain
*

Karma: -10
Deconectat Deconectat

Mesaje: 37



Vezi Profilul
« Răspunde #5 : Octombrie 28, 2013, 21:10:08 »

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 Neutral 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).


Cod:
#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;
}
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines