Chirurgia spinală minim invazivă
Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical. Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale. www.neurohope.ro |
[TEMA] problema pin
Last Updated: Aug 23 2014 22:43, Started by
TheUnforgiver
, Aug 21 2014 23:35
·
0
#1
Posted 21 August 2014 - 23:35
#include <iostream> #include <fstream> using namespace std; ifstream fin("pin.in"); ofstream fout("pin.out"); int main() { int numar,k,p,i,nr,aux=0; bool prim=1; fin>>k>>p; nr=9999; while (nr>999) { while (i<nr/2) { if (nr%i==0) prim=0; i++; } if ((prim==1) && (k!=nr%10) && (k!=(nr/10)%10) && (k!=(nr/100)%10) && (k!=nr/1000) && (p!=nr%10) && (p!=(nr/10)%10) && (p!=(nr/100)%10) && (p!=nr/1000) ) { fout<<nr; break; } nr--; } fin.close(); fout.close(); return 0; } de 3 ore stau la ea. nu mai pot. nu stiu ce are. debug-ul nu-mi merge...help am uitat, scuze. http://campion.edu.r...on=view&id=1194 |
#2
Posted 22 August 2014 - 00:11
In primul rand, i-ul ala cu care verifici daca numaru-i prim sau nu de la cat pleaca?
i are valoare reziduala, si ma indoiesc de faptul ca valoarea aia e mai mica de 10 mii, deci mai mica decat numarul tau, ca sa inceapa macar sa testeze ceva . Edited by S3Se7, 22 August 2014 - 00:12. |
#5
Posted 22 August 2014 - 19:41
O rezolvare mai eleganta si intuitiva ar fi: faci un tablou unidimensional V. il incarci cu numere prime pana la 10000, evident faci un contor, care le numara, si apoi doar parcurgi V de la sfarsit spre inceput (numerele prime fiind sortate crescator) si verifici daca V[i] contine numerele P sau K. Daca le contine, continui parcurgerea, Daca nu, afisezi numarul.
Pentru generarea numerelor prime, http://ro.wikipedia...._lui_Eratostene |
#6
Posted 23 August 2014 - 21:35
100p
#include <iostream> #include <fstream> using namespace std; ifstream fin("pin.in"); ofstream fout("pin.out"); int main() { int numar,k,p,i,nr; bool prim=1; fin>>k>>p; nr=9999; while (nr>999) { i = 2; prim = 1; while (i<nr/2) { if (nr%i==0) { prim=0; break; } i++; } if ((prim==1) && (k!=nr%10) && (k!=(nr/10)%10) && (k!=(nr/100)%10) && (k!=nr/1000) && (p!=nr%10) && (p!=(nr/10)%10) && (p!=(nr/100)%10) && (p!=nr/1000) ) { fout<<nr; break; } nr=nr-2; } fin.close(); fout.close(); return 0; } |
#7
Posted 23 August 2014 - 22:43
TheUnforgiver, on 23 august 2014 - 21:35, said: if ((prim==1) && (k!=nr%10) && (k!=(nr/10)%10) && (k!=(nr/100)%10) && (k!=nr/1000) && (p!=nr%10) && (p!=(nr/10)%10) && (p!=(nr/100)%10) && (p!=nr/1000) ) Nu mai bine memorai prima cifră, a doua, a treia şi a patra în 4 variabile ? #include <fstream> #include <math.h> std :: ifstream in("pin.in"); std :: ofstream out("pin.out"); int numar, k, p, cifra_1, cifra_2, cifra_3, cifra_4; bool Prim(int numar) { int d; for (d = 3; d <= (int)sqrt((double)numar); d += 2) if (numar % d == 0) return false; return true; } bool Conditie(int x) { return (x != cifra_1 && x != cifra_2 && x != cifra_3 && x != cifra_4); } int main(void) { in >> k >> p; for (numar = 9999; numar > 999; numar -= 2) { cifra_1 = numar / 1000; cifra_2 = numar / 100 % 10; cifra_3 = numar / 10 % 10; cifra_4 = numar % 10; if (Prim(numar) && Conditie(k) && Conditie(p)) { out << numar; break; } } return 0; } Edited by sftpdt, 23 August 2014 - 22:53. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users