Probleme de informatica - enunturi si rezolvari

Probleme de informatică
Clasa a IX-a
Elementele de bază C++ (46)
Subprograme predefinite (1)
Fişiere text (2)
Algoritmi elementari (111)
Tablouri unidimensionale (83)
Tablouri bidimensionale (64)
Probleme diverse (13)
Clasa a X-a
Subprograme (funcții) (87)
Şiruri de caractere (50)
Tipul înregistrare (26)
Recursivitate (57)
Alocarea dinamică a memoriei (2)
Liste înlănţuite (25)
Algoritmul lui Lee (1)
Clasa a XI-a
Metoda "Divide et impera" (12)
Metoda Backtracking (86)
Metoda Greedy (6)
Programare dinamică (18)
Grafuri neorientate (40)
Grafuri orientate (38)
Arbori (33)
Clasa a XII-a
Elemente de bază C# (32)
POO în C# (14)
Programare vizuală în C# (19)
Examen de bacalaureat
Competențe digitale
Examen de atestat
Admitere UBB (18)
Un numar n se numeste extraprim daca atât el, cât si orice numar obtinut prin permutarea cifrelor lui n, sunt numere prime. De exemplu, numarul 113 este un numar extraprim deoarece 113, 311, 131 sunt numere prime.
a) Scrieti definitia completa a unui subprogram f, cu un parametru, subprogram care:
- primeste prin intermediul parametrului a un numar natural nenul cu cel mult 3 cifre
- returneaza suma tuturor exponentilor din descompunerea în factori primi a valorii
parametrului a.
Exemplu: pentru a=90 subprogramul va returna valoarea 4, deoarece a=2*3^2*5 si 1+2+1=4.
b) Scrieti un program C/C++ care citeste de la tastatura un numar natural n, 2=n=999 si, folosind apeluri utile ale subprogramului f, verifica daca n este un numar extraprim. În caz afirmativ, programul afiseaza pe ecran mesajul DA, în caz contrar afisând mesajul NU.

#include<iostream>
using namespace std;

int f(int n)
{  int s=0,d=2;
   while(n>1)
     if(n%d==0) { s++;
		  n=n/d;
		}
     else d++;
   return s;
}

int main()
{ int n, x,y,z;
  cin>>n;
  if(n<10) if(f(n)==1) cout<<"da";
	   else cout<<"nu";
  else if(n<100) if(f(n)==1 && f(n%10*10+n/10)==1) cout<<"da";
		 else cout<<"nu";
       else
       {  x=n/100;
	  y=n/10%10;
	  z=n%10;
	  if(f(n)==1 && f(x*100+z*10+y)==1 && f(y*100+x*10+z)==1 &&
	     f(y*100+z*10+x)==1 && f(z*100+x*10+y)==1 && f(z*100+y*10+x)==1)
		cout<<"da";
		else cout<<"nu";
       }
  return 0;
}

19 apr 2024
Site-ul conține 884 de probleme rezolvate
Copyright © 2009-2018 Muresan Vasile Ciprian