•astronomy
|
|
« : Aprilie 06, 2008, 14:32:43 » |
|
Aici puteţi discuta despre problema Fibo.
|
|
|
Memorat
|
|
|
|
•andrici_cezar
|
|
« Răspunde #1 : Aprilie 25, 2008, 14:46:20 » |
|
ce are problema mea ........ nu inteleg de loc
|
|
|
Memorat
|
|
|
|
•wefgef
|
|
« Răspunde #2 : Aprilie 25, 2008, 14:49:00 » |
|
Numerele nu incap pe longint. Trebuie sa implementezi numere mari. Gasesti un articol care sa te ajute aici.
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•andrici_cezar
|
|
« Răspunde #3 : Aprilie 25, 2008, 18:17:59 » |
|
am incecat si imi da eroare de compilare??? am incercat int64 dar nu merge
|
|
|
Memorat
|
|
|
|
•gabitzish1
|
|
« Răspunde #4 : Aprilie 25, 2008, 20:13:50 » |
|
int64 nu inseamna numere mari. Retine numerele sub forma de vectori.
|
|
|
Memorat
|
|
|
|
•andrici_cezar
|
|
« Răspunde #5 : Aprilie 26, 2008, 10:03:19 » |
|
ms am luat 50 puncte... dati-mi si mie niste teste mai mare sa vad daca imi da bn... adica 1000000, 500000,600000,etc
|
|
|
Memorat
|
|
|
|
•razyelx
Client obisnuit
Karma: 0
Deconectat
Mesaje: 82
|
|
« Răspunde #6 : Mai 02, 2008, 11:10:42 » |
|
Nr-ele nu sunt deloc mari. Maximul nu depaseste 1 000 000 asta inseamna ca iti intra in long, dar inseamna mult mai mult de atat. Daca chiar vrei sa incerci foloseste long long. Iar nr-ele de forma palindrom sunt destul de putine. Ok cred ca ti-am dat destule indicii. Bafta!
|
|
|
Memorat
|
|
|
|
•Florian
|
|
« Răspunde #7 : Mai 30, 2008, 22:22:33 » |
|
Generez toate numerele in baza doi ( cu reprezentarile binare ale unui contor de la 1 la 2^16). Reprezentarile binare care sunt palindroame le transform in numar in baza 10 [considerandu`le scrise in sistem fibo), iar daca numerele in baza 10 sunt mai mici ca n, incrementez solutia. Problema e ca iau WA. Nu inteleg de ce ar fi nevoie de numere mari [reprezentarea binara o tin sub forma de vector]. Poate cineva sa ma ajute? Problema e banala, insa ...
|
|
« Ultima modificare: Mai 30, 2008, 22:38:10 de către Marcu Florian »
|
Memorat
|
|
|
|
•Protoman
|
|
« Răspunde #8 : Mai 30, 2008, 22:53:00 » |
|
Tu generezi toate posibilitatile pana la 2^16. Poti incerca altceva: sa generezi doar jumatate din numar si apoi sa ii faci oglinda pastrand complexitatea Prin "Oglinda" ma refer la: ai generat 10010 oglinda care o faci tu va fi: 10010 + 01001 sau 1001 0 + 1001 din astea iti vor iesi palindroamele: 1001001001 100101001
|
|
« Ultima modificare: Mai 30, 2008, 23:01:32 de către Andrei Purice »
|
Memorat
|
|
|
|
•Florian
|
|
« Răspunde #9 : Mai 31, 2008, 11:21:20 » |
|
Intr-adevar. E buna indicatia. Multumesc. Totusi, nu inteleg de ce 010 nu este luat in considerare in exemplu.... Poate cineva sa ma lamureasca?
|
|
|
Memorat
|
|
|
|
•astronomy
|
|
« Răspunde #10 : Mai 31, 2008, 11:37:33 » |
|
In general numerele incep cu o cifra nenula.
|
|
|
Memorat
|
|
|
|
•gabor_oliviu1991
|
|
« Răspunde #11 : Mai 31, 2008, 14:20:17 » |
|
daka imi da eroarea user.cpp:47: error: 'strrev' was not declared in this scope inseamna ca nu are compilatoru functia strrev ?
|
|
|
Memorat
|
|
|
|
•astronomy
|
|
« Răspunde #12 : Mai 31, 2008, 14:38:04 » |
|
Da, strrev nu este ANSI C.
|
|
|
Memorat
|
|
|
|
•gabor_oliviu1991
|
|
« Răspunde #13 : Iunie 17, 2008, 17:55:18 » |
|
am facut un fel de brute la problema asta... am luat toate numerele de la 1 la 1 mil, leam transformat in baza 2, leam facut in baza fibonaci si daca erau mai mici ca N incrementam ceva. iau TLE pe 7 teste, deci iau 40 de pct. am incercat sa fac si cu preprocesare... tot asa, iau un iterator de la 1 la un milion si bag numerele intrun vector. de aici fac o cautare binara la cel mai mare numar mai mic decat N si afisez pozitia lui. de ce nu stiu, dar mie imi baga in vector doar pana pe la 17000. o idee sau daca am ceva gresala la implementare. merci anticipat off-topic: HAI ROMANIA!!! LE: cu a doua varianta iau 50 de pct. LE2: am luat in sfarsit 100. ideea e ca la ultimul test N depaseste 1 milion
|
|
« Ultima modificare: Iunie 19, 2008, 18:14:21 de către gaboru corupt »
|
Memorat
|
|
|
|
•brainwashed20
Strain
Karma: -2
Deconectat
Mesaje: 13
|
|
« Răspunde #14 : Ianuarie 02, 2011, 00:18:07 » |
|
Ce as putea sa mai imbunatatesc la sursa asta ca sa imi iasa si ultimul test, ca practic solutia e cea oficiala.. #include<cstdio> #include<cstring> #include<bitset>
using namespace std; #define DIM 31
int N, M=30, sol=1;
int fib[DIM] = {0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269}; inline int verif(int val) { int max=0; register int i=M; bitset <DIM> aux; while(val<fib[i]) --i; val-=fib[i]; aux[i]=1; if(i>max) max=i; for(; i && val; --i) { while(val<fib[i]) --i; val-=fib[i]; aux[i]=1; } for(i=1; i<=max/2; ++i) if(aux[i]!=aux[max-i+1]) return 0; return 1; } int main() { freopen("fibo.in","r",stdin); freopen("fibo.out","w",stdout); register int i; scanf("%d",&N); for(i=2; i<=N; ++i) sol+=verif(i); printf("%d\n",sol); return 0; }
|
|
|
Memorat
|
|
|
|
•SebiSebi
|
|
« Răspunde #15 : Septembrie 23, 2011, 14:51:29 » |
|
Cat trebuie sa dea pentru 1 000 000 ? Multumesc anticipat!
|
|
|
Memorat
|
|
|
|
•SpiderMan
|
|
« Răspunde #16 : Septembrie 23, 2011, 17:40:37 » |
|
|
|
|
Memorat
|
|
|
|
•TheNechiz
|
|
« Răspunde #17 : Februarie 14, 2013, 13:22:03 » |
|
10x
|
|
« Ultima modificare: Decembrie 11, 2013, 16:26:03 de către Birisan Razvan »
|
Memorat
|
|
|
|
|