Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cu ce va aparati de cainii agresi...

Nu imi platiti coletul cu cardul ...

Mi-au disparut amigdalitele ?

Exista vreun plan de terorizare p...
 Schimbare adresa DNS IPv4 pe rout...

Recomandare Barebone

Monede JO 2024

Suprasolicitare sistem electric
 CIV auto import

Mutare in MOZAMBIC - pareri, expe...

Scoatere antifurt airtag de pe ha...

Magnet in loc de clește pent...
 Cumparat/Locuit in apartament si ...

Pot folosi sistemul PC pe post de...

Sokol cu distorsiuni de cross-over

Filtru apa potabila cu osmoza inv...
 

[TEMA] problema pin

- - - - -
  • Please log in to reply
6 replies to this topic

#1
TheUnforgiver

TheUnforgiver

    Junior Member

  • Grup: Members
  • Posts: 148
  • Înscris: 04.08.2014
#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
S3Se7

S3Se7

    Senior Member

  • Grup: Senior Members
  • Posts: 2,073
  • Înscris: 17.12.2009
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.


#3
TheUnforgiver

TheUnforgiver

    Junior Member

  • Grup: Members
  • Posts: 148
  • Înscris: 04.08.2014
modificam codul sursa ca sa fac niste teste. e i=2

#4
EnachescuAlin

EnachescuAlin

    Active Member

  • Grup: Members
  • Posts: 1,008
  • Înscris: 08.07.2013
pune inainte de al doilea while:
i = 2;
prim = 1;

#5
matamata123

matamata123

    Junior Member

  • Grup: Members
  • Posts: 164
  • Înscris: 14.08.2012
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
TheUnforgiver

TheUnforgiver

    Junior Member

  • Grup: Members
  • Posts: 148
  • Înscris: 04.08.2014
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
sftpdt

sftpdt

    Senior Member

  • Grup: Senior Members
  • Posts: 3,664
  • Înscris: 29.08.2013

 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

Chirurgia spinală minim invazivă 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

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate