 |
|
It is currently Wed Sep 08, 2010 4:56 am
|
View unanswered posts | View active topics
|
Page 1 of 1
|
[ 8 posts ] |
|
| Author |
Message |
|
tw8
Moderator
Joined: Fri Jul 27, 2007 3:54 pm Posts: 610
|
 [Clasa IX]Numere
Mayaşii reprezentau numerele în baza 20 prin puncte şi linii astfel: • un punct înseamnă 1. • o linie înseamnă 5. Forma de coajă înseamnă 0 şi ne arată că lipseşte o grupă (o cifră în baza 20). De exemplu numărul 18 se reprezintă numeric 555111. Valoarea acestui număr în sistemul de numeraţie zecimal se calculează 5+5+5+1+1+1. Pentru numere mai mari decât 19 grupele de semne se desenează una peste cealaltă iar numeric noi le vom scrie ca grupuri de cifre separate de spaţii. De exemplu numărul 27 se desenează pe două nivele (are două grupe de semne suprapuse). Numeric îl vom scrie de jos în sus 1 511 şi se calculează 1 * 20¹ + (5+1+1). Să mai prezentăm ca exemplu un număr ce conţine trei grupe de semne: 11 0 51 - are valoarea (1+1) * 20² + 0 * 20¹ + (5+1) Dându-se un număr natural în baza 10 să se reprezinte în sistemul de numeraţie Mayaş în forma numerică. Date de intrare Fişierul de intrare NUMERE.IN conţine pe prima linie numărul dat. Date de ieşire Fişierul de ieşire NUMERE.OUT va conţine pe prima linie atâtea numere câte grupe are reprezentarea numărului dat în forma numerică prezentată mai sus, separate printr-un spaţiu. Restricţii şi precizări• În cadrul unei grupe vom afişa sau 0 sau un număr ce poate avea doar cifre de 5 şi de 1. Se observă că 1 se poate repeta cel mult de 4 ori iar 5 se repetă de maxim 3 ori în cadrul unei grupe. • Dacă un număr conţine într-o grupă atât 1 cât şi 5 cifrele 5 vor apărea obligatoriu înaintea celor de 1 • Numărul citit din fişier este ≤ 900000000 ExempluNUMERE.INNUMERE.OUT ExplicaţieCode: Proba se poate face astfel: 1*20²+(5+1+1)*20¹+1=400+7*20+1=400+140+1=541 OLI 2006 - Cluj Timp maxim de execuţie/test : 1 secundăSolutie oficiala:Voi revenii cu ea.
|
| Tue Apr 14, 2009 8:57 pm |
|
 |
|
1011110
New Member
Joined: Sun Dec 20, 2009 11:28 pm Posts: 13
|
 Re: [Clasa IX]Numere
Eheh. Subiectul l-am gasit azi dimineata pe un alt website, si am cautat o rezolvare. In primul rand, sunt foarte sigur ca s-a strecurat o eroare la numarul 27. Reprezentarea numerica corecta ar fi exact invers: 1 511 (1* 20^1 + (5+1+1)*20^0=27). Daca faci verificarea lor nu iese 27. Daca am interpretat gresit enuntul va rog sa ma atentionati. Rezolvarea propusa de mine: Code: #include <stdio.h> int main() { FILE *fin=fopen("NUMERE.IN","r"); FILE *fout=fopen("NUMERE.OUT","w"); long x; int v[1000],i,j,k; bool spaceneeded=0; fscanf(fin,"%ld",&x); if(x<=19) { for(i=1;i<=x/5;i++) fprintf(fout,"%d",5); for(i=1;i<=x-(5*(x/5));i++) fprintf(fout,"%d",1); } else { i=0; while(x!=0) { v[i]=x%20; x/=20; i++; } for(k=i-1;k>=0;k--) { if(v[k]!=0) { for(j=1;j<=v[k]/5;j++) { fprintf(fout,"%d",5); spaceneeded=1; } for(j=1;j<=v[k]-(5*(v[k]/5));j++) { fprintf(fout,"%d",1); spaceneeded=1; } if(spaceneeded) fprintf(fout,"%s"," "); //spatiul care delimiteaza grupele } else { fprintf(fout,"%d",0); fprintf(fout,"%s"," "); //spatiul care delimiteaza grupele } } } fclose(fout); return 1; } // Rezolvare propusa de: Pele Alexandru
In ceea ce priveste eficienta, nu sunt sigur ca e cel mai eficient algoritm de rezolvare. Daca aveti o varianta mai buna, va rog frumos sa nu ezitati sa o postati.
|
| Mon Dec 21, 2009 10:28 pm |
|
 |
|
tw8
Moderator
Joined: Fri Jul 27, 2007 3:54 pm Posts: 610
|
 Re: [Clasa IX]Numere
Nu am citit codul tau, dar sunt convins ca nu e mai eficient decat un cod ca asta (putina preprocesare  ): Code: #include <iostream> using namespace std;
int v[20]={0,1,11,111,1111,5,51,511,5111,51111,55,551,5511,55111,551111,555,5551,55511,555111,5551111},stiva[10];
int main() { int n,i; cin>>n; for(i=0;n;n/=20,i++)stiva[i]=v[n%20]; for(i=i-1;i>=0;i--)cout<<stiva[i]<<" "; }
O rezolvare fara preprocesare care foloseste o functie recursiva: Code: #include <iostream> using namespace std;
void f(int n) { if(!n)return; f(n/20); if(0==n%20)cout<<0; else for(int i=n%20;i;i--) if(i>=5){cout<<5;i-=4;} else cout<<1; cout<<" "; }
int main() { int n,i; cin>>n; f(n); }
L.E.: Am uitat sa mentionez, rezolvarile le-am scris acum pentru ca mi-am amintit ca nu am postat nicio rezolvare la aceasta problema. Din graba, e posibil sa fi gresit. Daca observati ceva, dati-mi un semn. Si da, ai dreptate la descompunerea lui 27. Modificat  .
|
| Mon Dec 21, 2009 11:10 pm |
|
 |
|
1011110
New Member
Joined: Sun Dec 20, 2009 11:28 pm Posts: 13
|
 Re: [Clasa IX]Numere
Eheh.  Putina explicatie la primul, daca se poate? N-am nici cea mai mica idee cum functioneaza but AWESOME.
|
| Mon Dec 21, 2009 11:26 pm |
|
 |
|
tw8
Moderator
Joined: Fri Jul 27, 2007 3:54 pm Posts: 610
|
 Re: [Clasa IX]Numere
Pur si simplu se descompune numarul in baza 20, doar ca la fiecare pas, in loc sa afisam restul obtinut prin impartirea la 20 a numarului, afisam reprezentarea acestuia in sistemul mayas, adica v[r] - presupunand ca r este restul. Nu stiu daca ai inteles, pentru ca nu prea le am cu explicatul. Daca n-ai inteles, spune-mi si voi incerca sa explic mai bine.
|
| Tue Dec 22, 2009 2:36 pm |
|
 |
|
Patrunjel
New Member
Joined: Sat Nov 14, 2009 6:08 pm Posts: 23
|
 Re: [Clasa IX]Numere
Salutari,nu m-am descurcat sa fac un topic nou,deci voi scrie aici(cu scuzele de rigoare) Maine am olimpiada locala la informatica,sunt in clasa a 9a,si pana anul acesta (defapt pana vara aceasta) nu am avut tangente cu programarea.noi la scoala am facut numai pseudocod si putin C++(numai teorie,nu am scris niciun program pana acum),insa eu as stii ceva C++,ins anu destul cat sa ma laud...Si aici vine si intrebarea: Am vreo sansa daca nu ma descurc cu C++ ? Si ati putea sa imi dati o problema,sau ceva,sa stiu macar despre ce ar fii vorba?Astazi m-am pus sa recapitulez din caiet si manual(defapt sa recitesc,fiindca stiu pseudocod ca in palma,cel putin ceea ce mi s-a predat)...va rog sa ma ajutati cu un raspuns cat mai repede...
|
| Mon Jan 25, 2010 2:06 pm |
|
 |
|
dranaxum
Braincode Team Leader
Joined: Mon Sep 10, 2007 11:40 pm Posts: 2731 Location: Galati
|
 Re: [Clasa IX]Numere
|
| Mon Jan 25, 2010 2:57 pm |
|
 |
|
nagulu
Banned
Joined: Sat Jul 17, 2010 8:50 am Posts: 2
|
 Re: [Clasa IX]Numere
[sters]
|
| Sat Jul 17, 2010 8:56 am |
|
|
Page 1 of 1
|
[ 8 posts ] |
|
| Google Search |
| | Donate |
|---|
|
| Google Ads |
|
| Global Announcements |
|
| Programming Contests |
|
| Newsletter |
|
| Hackpedia RSS |
|
| Hackpedia's Partners |
|
|
Who is online |
Users browsing this forum: No registered users and 1 guest |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum
|
|
 |
|
|