Răspuns :
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
//creaza un vector cu 10 elemente fiecare cu valoarea 0
int numere[1000];
ofstream fon("numere.out");
int nr_cifre_distincte(int x){
//daca x este de 4 cifre, putem extrage direct care sunt acele cifre
//prin impartirea la diversele puteri ale lui 10
//exemplu 3465
//a=3465/1000-3
//b=(3465/100)%10=34%10=4
//c=(3465%100)/10=65/10=6
//d=3465%10=5
//asta daca este de 4 cifre. Daca nu, trebuie simplificat
int a,b,c,d,nr=0,i,cifre[11];
//initializam sirul de cifre cu 0
for(i=0;i<11;i++){
cifre[i]=0;
}
if(x/1000>0){
a=x/1000;
b=(x/100)%10;
c=(x%100)/10;
d=x%10;
}
//daca are 3 cifre
else if(x/100>0){
a=x/100;
b=(x%100)/10;
c=x%10;
//d nu mai avem nevoie, deci punem valoare de 10 adica invalida
//caci 10 nu este o cifra
d=10;
}
//daca nu, atunci are doar 2 cifre
else if(x/10>0){
a=x/10;
b=x%10;
//c si d nu mai avem nevoie
c=10;
d=10;
}
//daca nu, este una singura
else{
a=x;
b=10;
c=10;
d=10;
}
//incrementam elementele din vector care au index cele 4 cifre cu cate 1
cifre[a]++;
cifre[b]++;
cifre[c]++;
cifre[d]++;
//trecem prin toate pozitiile. Daca valoarea pozitiei este mai mare decat 0
//atunci este cel putin o cifra distincta
for(i=0;i<10;i++){
if(cifre[i]>0){
nr++;
}
}
return nr;
}
//functie pentru a intercala un element pe o pozitie intr-un vector de numere
void pune_element(int a[],int lung_sir,int poz,int x){
int i;
//daca pozitia elementului
for(i=lung_sir;i>=poz;i--){
a[i+1]=a[i];
}
a[poz]=x;
}
void extragere_factori_primi(int n){
int i,exp,aux=n;
cout<<"Argument f: "<<n;
for(i=2;i<=aux/2;i++){
//daca i este divizor al lui n
if(n%i==0){
//initializam exponentul
exp=0;
while(n%i==0){
exp++;
n=n/i;
}
fon<<i<<" "<<exp;
fon<<endl;
}
}
}
void afisare(int a[],int n){
int i;
for(i=0;i<n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
}
int main(){
ifstream fin("numere.in");
int n,i,nr_sol=0,poz;
// cout<<nr_cifre_distincte(33)<<endl;
while(fin>>n){
//daca nr de cifre este una singura
if(nr_cifre_distincte(n)==1){
//incepe sa cauti in sir sa vezi unde s-ar potrivi
//daca este primul din sir, atunci pune-l primul
if(nr_sol<1){
numere[0]=n;
}
else{
//pozitia invalida initial
poz=-1;
for(i=0;i<nr_sol;i++){
if(n<numere[i]){
poz=i;
break;
}
}
//daca pozitia a ramas invalida, atunci este cel mai mare element din sir
if(poz<0){
numere[nr_sol]=n;
}
else{
pune_element(numere,nr_sol,poz,n);
}
}
nr_sol++;
}
}
if(nr_sol==0){
fon<<"Nu exista";
}
else{
for(i=0;i<nr_sol;i++){
fon<<numere[i]<<" ";
}
fon<<endl;
}
extragere_factori_primi(numere[nr_sol-1]);
return 0;
}
#include <fstream>
#include <cmath>
using namespace std;
//creaza un vector cu 10 elemente fiecare cu valoarea 0
int numere[1000];
ofstream fon("numere.out");
int nr_cifre_distincte(int x){
//daca x este de 4 cifre, putem extrage direct care sunt acele cifre
//prin impartirea la diversele puteri ale lui 10
//exemplu 3465
//a=3465/1000-3
//b=(3465/100)%10=34%10=4
//c=(3465%100)/10=65/10=6
//d=3465%10=5
//asta daca este de 4 cifre. Daca nu, trebuie simplificat
int a,b,c,d,nr=0,i,cifre[11];
//initializam sirul de cifre cu 0
for(i=0;i<11;i++){
cifre[i]=0;
}
if(x/1000>0){
a=x/1000;
b=(x/100)%10;
c=(x%100)/10;
d=x%10;
}
//daca are 3 cifre
else if(x/100>0){
a=x/100;
b=(x%100)/10;
c=x%10;
//d nu mai avem nevoie, deci punem valoare de 10 adica invalida
//caci 10 nu este o cifra
d=10;
}
//daca nu, atunci are doar 2 cifre
else if(x/10>0){
a=x/10;
b=x%10;
//c si d nu mai avem nevoie
c=10;
d=10;
}
//daca nu, este una singura
else{
a=x;
b=10;
c=10;
d=10;
}
//incrementam elementele din vector care au index cele 4 cifre cu cate 1
cifre[a]++;
cifre[b]++;
cifre[c]++;
cifre[d]++;
//trecem prin toate pozitiile. Daca valoarea pozitiei este mai mare decat 0
//atunci este cel putin o cifra distincta
for(i=0;i<10;i++){
if(cifre[i]>0){
nr++;
}
}
return nr;
}
//functie pentru a intercala un element pe o pozitie intr-un vector de numere
void pune_element(int a[],int lung_sir,int poz,int x){
int i;
//daca pozitia elementului
for(i=lung_sir;i>=poz;i--){
a[i+1]=a[i];
}
a[poz]=x;
}
void extragere_factori_primi(int n){
int i,exp,aux=n;
cout<<"Argument f: "<<n;
for(i=2;i<=aux/2;i++){
//daca i este divizor al lui n
if(n%i==0){
//initializam exponentul
exp=0;
while(n%i==0){
exp++;
n=n/i;
}
fon<<i<<" "<<exp;
fon<<endl;
}
}
}
void afisare(int a[],int n){
int i;
for(i=0;i<n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
}
int main(){
ifstream fin("numere.in");
int n,i,nr_sol=0,poz;
// cout<<nr_cifre_distincte(33)<<endl;
while(fin>>n){
//daca nr de cifre este una singura
if(nr_cifre_distincte(n)==1){
//incepe sa cauti in sir sa vezi unde s-ar potrivi
//daca este primul din sir, atunci pune-l primul
if(nr_sol<1){
numere[0]=n;
}
else{
//pozitia invalida initial
poz=-1;
for(i=0;i<nr_sol;i++){
if(n<numere[i]){
poz=i;
break;
}
}
//daca pozitia a ramas invalida, atunci este cel mai mare element din sir
if(poz<0){
numere[nr_sol]=n;
}
else{
pune_element(numere,nr_sol,poz,n);
}
}
nr_sol++;
}
}
if(nr_sol==0){
fon<<"Nu exista";
}
else{
for(i=0;i<nr_sol;i++){
fon<<numere[i]<<" ";
}
fon<<endl;
}
extragere_factori_primi(numere[nr_sol-1]);
return 0;
}
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Ne bucurăm dacă informațiile oferite v-au fost de ajutor. Pentru orice întrebare sau clarificare suplimentară, echipa noastră vă stă la dispoziție. Revenirea dumneavoastră ne onorează – nu uitați să ne salvați în lista de favorite!