•LowArmour
Strain
Karma: 1
Deconectat
Mesaje: 6
|
 |
« Răspunde #100 : Martie 10, 2009, 19:41:42 » |
|
Multumesc. Am rezolvat.
|
|
|
Memorat
|
|
|
|
•valentinrosca
Strain
Karma: -8
Deconectat
Mesaje: 29
|
 |
« Răspunde #101 : Aprilie 02, 2009, 14:29:36 » |
|
Aici merge __int64 
|
|
|
Memorat
|
|
|
|
•gabitzish1
|
 |
« Răspunde #102 : Aprilie 02, 2009, 16:05:51 » |
|
Nu. Foloseste long long in loc de __int64.
|
|
|
Memorat
|
|
|
|
•valentinrosca
Strain
Karma: -8
Deconectat
Mesaje: 29
|
 |
« Răspunde #103 : Aprilie 03, 2009, 19:09:59 » |
|
Mi-am dat seama.  Raspunsu este al k+1 numar prim la patrat. I-mi iese 50 de puncte. Nu-mi iese la numere mari. Ma poate ajuta cineva la chestia asta.Va rog! [...] Eu lucrez in C++. [..] Pls! Va rog! [...] [editat de moderator] Nu mai posta consecutiv si fii sigur ca daca folosesti multe smiley-uri nu vei fi ajutat prompt!
|
|
« Ultima modificare: Aprilie 03, 2009, 19:15:15 de către Sima Cotizo »
|
Memorat
|
|
|
|
•sima_cotizo
|
 |
« Răspunde #104 : Aprilie 03, 2009, 19:15:47 » |
|
Incearca sa faci debug sau fii mai exact cand spui ca nu-ti iese.
|
|
|
Memorat
|
|
|
|
•vlad_oltean
Strain
Karma: 2
Deconectat
Mesaje: 25
|
 |
« Răspunde #105 : Aprilie 05, 2009, 21:42:22 » |
|
ajutati-ma si pe mine, va rog frumos. am o problema foarte dubioasa. am facut problema, merge corect si pe testul cu 100.000, dar imi afiseaza gresit  stiu sigur ca algoritmul e bun, pentru ca in debug imi apare valoarea corecta, dar in fisierul de iesire e o aberatie. mai precis, am codul urmator: #include <stdio.h> #define N 1318700
bool prim[N]; long long x; int count,k;
int main() { freopen("prim.in","r",stdin); freopen("prim.out","w",stdout); scanf("%d",&k); [...] for(...) if(...) { x=i*i; printf("%lld",x); break; } } fclose(stdin); fclose(stdout); return 0; }
exact asta fac. e foarte dubios, pentru ca daca dau 100000, in debug imi arata x ca fiind 1.689.274.677.841, iar in fisierul de iesire, in urma instructiunii printf("%lld",x) imi afiseaza 1.352.530.513. ce gresesc? 
|
|
|
Memorat
|
|
|
|
•c_e_manu
|
 |
« Răspunde #106 : Aprilie 05, 2009, 21:47:09 » |
|
Folosesti cumva Borland? Eventual incearca si cu streamuri sau "%I64" (aici s-ar putea sa ma insel, ca nu am folosit niciodata  ) in loc de "%lld".
|
|
|
Memorat
|
|
|
|
•gh09
Strain
Karma: -2
Deconectat
Mesaje: 38
|
 |
« Răspunde #107 : Aprilie 05, 2009, 21:47:31 » |
|
vine "%I64d". Dar totusi pe infoarena trimie cu "%lld" pt ca se testeaza pe linux!
|
|
|
Memorat
|
|
|
|
•vlad_oltean
Strain
Karma: 2
Deconectat
Mesaje: 25
|
 |
« Răspunde #108 : Aprilie 05, 2009, 21:50:04 » |
|
 am luat suta cu fstream. as fi recunoscator daca mi-ar explica cineva de ce. nu folosesc borland, folosesc mingw studio. din cate am inteles ar trebui sa se comporte la fel cu compilatorul de pe infoarena. [Edit] foarte foarte aiurea... cu "%I64d" ala iau doar 50.. [Later edit] eu nu mai inteleg absolut nimic.. deci cu fstream e ok si la mine si pe site, dar mi-e mie incomod. cu stdio imi da mie bine daca folosesc "%I64d", dar da gresit pe site. daca folosesc "%lld", imi da gresit pe compilatorul meu, dar corect in evaluator. e aiurea rau de tot 
|
|
« Ultima modificare: Aprilie 05, 2009, 22:00:40 de către Vladimir Oltean »
|
Memorat
|
|
|
|
•c_e_manu
|
 |
« Răspunde #109 : Aprilie 05, 2009, 21:58:57 » |
|
Pe MinGW e un mic bug despre care s-a mai vorbit pe infoarena la afisarea unui "long long" folosind printf(). Eu mai nou folosesc streamuri fiindca au devenit mai rapide. Doar in concursuri in care se folosesc compilatoare mai vechi folosesc printf() si scanf(). Plus ca imi e mai usor sa scriu un fout<<var decat printf("%d",var). 
|
|
« Ultima modificare: Aprilie 05, 2009, 22:06:21 de către Emanuel Cinca »
|
Memorat
|
|
|
|
•vlad_oltean
Strain
Karma: 2
Deconectat
Mesaje: 25
|
 |
« Răspunde #110 : Aprilie 05, 2009, 22:02:41 » |
|
fout>>var
 semnele nu se pun invers (<<) din cate stiu eu?  e clar cat iti e de usor...
|
|
|
Memorat
|
|
|
|
•sima_cotizo
|
 |
« Răspunde #111 : Aprilie 05, 2009, 22:04:12 » |
|
[Later edit] eu nu mai inteleg absolut nimic.. deci cu fstream e ok si la mine si pe site, dar mi-e mie incomod. cu stdio imi da mie bine daca folosesc "%I64d", dar da gresit pe site. daca folosesc "%lld", imi da gresit pe compilatorul meu, dar corect in evaluator. e aiurea rau de tot  Este o diferenta intre MinGW si g++ la afisarea numerelor long long. Pe g++ se foloseste %lld; pe MinGW, I64d. Cum pe infoarena se compileaza cu g++, iata de ce iei bine aici si gresit la tine cand afisezi cu lld. Fstream se descurca la fel si pe MinGW si pe g++ si de-aia e ok in ambele parti.
|
|
|
Memorat
|
|
|
|
•vlad_oltean
Strain
Karma: 2
Deconectat
Mesaje: 25
|
 |
« Răspunde #112 : Aprilie 05, 2009, 22:06:36 » |
|
Este o diferenta intre MinGW si g++ la afisarea numerelor long long. Pe g++ se foloseste %lld; pe MinGW, I64d. Cum pe infoarena se compileaza cu g++, iata de ce iei bine aici si gresit la tine cand afisezi cu lld.
Fstream se descurca la fel si pe MinGW si pe g++ si de-aia e ok in ambele parti.
multumesc pentru clarificare  asta inseamna ca e cazul sa-mi schimb compilatorul cu unul mai asemanator cu g++?
|
|
« Ultima modificare: Aprilie 05, 2009, 22:40:53 de către Vladimir Oltean »
|
Memorat
|
|
|
|
•c_e_manu
|
 |
« Răspunde #113 : Aprilie 05, 2009, 22:06:50 » |
|
fout>>var
 semnele nu se pun invers (<<) din cate stiu eu?  e clar cat iti e de usor... My bad 
|
|
|
Memorat
|
|
|
|
•sima_cotizo
|
 |
« Răspunde #114 : Aprilie 05, 2009, 22:21:27 » |
|
multumesc pentru clarificare  asta inseamna ca e cazul sa-mi schimb compilatorul cu unul mai asemanator cu g++? Nu neaparat. Daca ai in vedere diferenta asta, atunci poti sa folosesti MinGW in continuare (care e foarte asemanator cu g++ oricum). Poti sa incerci si Visual Studio Express care mi se pare ca afiseaza tot cu lld...
|
|
|
Memorat
|
|
|
|
•valentinrosca
Strain
Karma: -8
Deconectat
Mesaje: 29
|
 |
« Răspunde #115 : Aprilie 10, 2009, 10:37:03 » |
|
Pai am facut un program de 90 pt si la ultmul test imi iese din timp si nu stiu testul.Dar o sa rezolv chestia asta
|
|
|
Memorat
|
|
|
|
•miculprogramator
|
 |
« Răspunde #116 : August 01, 2009, 12:17:41 » |
|
Salut ! Am citit tot topicul si am gasit informatii folositoare legate de problema.  Am incercat sa fac intocmai: pun intr-un vector x toate numerele prime pana la 5.000.000 apoi afisez (x[K+1]*x[K+1]). Numai ca imi da 1, am facut afisare anumerelor din vector si este buna. Cred ca problema mea ar fi la ciur pentru ca afisarea am facut-o astfel: for(int i=2;i<=max;i++) if(x[i]==1) std::cout<<i<<' '; Asa ca am incercat pentru ca eu incep i-ul de la 2. Insa tot nu merge. Unde ar putea fi problema? 
|
|
|
Memorat
|
|
|
|
•marcelcodrea
|
 |
« Răspunde #117 : August 01, 2009, 13:05:57 » |
|
Din ce am inteles eu, tu in vectorul x ai ciurul si nu sirul de numere prime(ai si numere neprime acolo). Tu prin (x[K+1]*x[K+1]) nu ridici la patrat al (K+1)-lea numar prim ci al (K+1)-lea numar. Tu trebuie sa iterezi prin vectorul x si sa numeri cate de (x[it] == 1) ai (cate numere prime ai) cu o variabila aux, si doar cand aux pe care o numeri astfel, e egala cu k+1 trebuie sa afisezi x[it] * x[it] unde it e valoarea iteratorului.
|
|
|
Memorat
|
Imperiile coloniale au murit... Germania Nazistä a murit... Uniunea Sovieticä a murit... Si nici Uniunea Europeanä nu se simte prea bine
|
|
|
•miculprogramator
|
 |
« Răspunde #118 : August 01, 2009, 19:11:31 » |
|
Am descoperit ce greseam era la ciur ! Am reusit, mersi .  Edit: Am observat niste gresel in enuntul problemei: Demonstreaza ca ideea lui Ghoerghe este doar o aproximare. Dandu-se un numar K, afla cel mai mic numar N care nu este divizibil cu primele K numele prime, dar nu este prim. Nu-i o observatie rautacioasa, vreau doar sa atrag atenita asupra acestor greseli minore. 
|
|
« Ultima modificare: August 01, 2009, 19:24:17 de către ALbulescu Cosmina »
|
Memorat
|
|
|
|
•pauldb
|
 |
« Răspunde #119 : August 01, 2009, 21:04:09 » |
|
Am rezolvat. Este bine ca semnalati astfel de erori! 
|
|
|
Memorat
|
Am zis 
|
|
|
•vladtarniceru
|
 |
« Răspunde #120 : Decembrie 11, 2009, 19:30:04 » |
|
salut tuturor.as avea o problema in legatura cu problema  .la programul meu se blocheaza,am facut cu ciurul lui erastostene dar nu-mi merge(se blocheaza cand dau pe execute).ma poate ajuta cineva?va rog mult!!!uite sursa mea: #include<stdio.h> int a[10000],x[10000000],i,j,k,l=0,z,dk; int q=0; FILE *f,*g; int ciur(){ for(i=1;i<=1000000;i++) a[i]=0; i=2; dk=k; while(i<=1000){ if(a[i]==0) for(j=i+i;j<=1000000;j+=i)a[j]=1; i++; } j=1; for(i=1;dk>0;i++) if(a[i]==0) {dk--;x[j++]=i;} } int main(){ f=freopen("prim.in","rt",stdin); g=freopen("prim.out","wt",stdout); printf("%d",k); ciur(); q=2; while(l==0){ z=1; while(a[q]==0) q++; while(q%x[z]==0 && z<=k) z++; l=(z==k); q++; } fprintf(g,"%d",q); fclose(g); return 0; }
daca isi da cineva seama unde e eroarea sa scrie pe forum sau pe id-ul meu vladtarniceru(sau sa mi-o trimita mail la [email protected]). 
|
|
|
Memorat
|
|
|
|
•Florian
|
 |
« Răspunde #121 : Decembrie 11, 2009, 22:32:41 » |
|
Tu nu citesti k-ul ( printf("%d",k); ). a[] e prea mic declarat. Fa si tu un debug ( cu watch, sau cu afisari ). Nu cred ca e indicat sa postezi pe forum chiar orice problema. In curand o sa discutam aici erori de compilare. Nu cred ca asta e scopul infoarena. Spor! 
|
|
|
Memorat
|
|
|
|
•SpiderMan
|
 |
« Răspunde #122 : Ianuarie 21, 2010, 20:49:46 » |
|
Deci nu pot sa cred de ce imi da la ciur aiurea: al 100.000-lea nr. prim zice ca e 1299709  ce am putut gresi? Ciurul l-am facut in 2 moduri si tot asa
|
|
|
Memorat
|
|
|
|
•klamathix
|
 |
« Răspunde #123 : Ianuarie 21, 2010, 21:54:43 » |
|
Pai..ala e. Probabil n-ai folosit long long pentru rezultat.
|
|
|
Memorat
|
|
|
|
•SpiderMan
|
 |
« Răspunde #124 : Ianuarie 22, 2010, 14:07:20 » |
|
#define MAX 1500000 bool v[MAX]; long long p[MAX] Crezi ca e gresit ?
|
|
|
Memorat
|
|
|
|
|