#include <iostream>
using namespace std;
void cifre(int n, int b, int F[])
{//face vector caracteristic pentru cifrele
// lui n in baza b
for(int i=0;i<=9;i++)
F[i]=0;//initializez caracteristica cu 0
do //descompun pe n in baza b
{
F[n%b]=1;//cifra n%b apare
n=n/b;
}
while(n>0);
}
void magice(int n, int p, int q, int &k, int X[])
{
k=0;//initial sunt 0 nr magice
for(int x=1;x<=n;x++) //parcurg intervalul [1,n]
{
int P[10],Q[10];
cifre(x,p,P);//marchez cifrele lui x in baza p in vectorul P
cifre(x,q,Q);//marchez cifrele lui x in baza q in vectorul Q
int ok=1;
for(int i=0;i<=9;i++)//parcurg cifrele de la 0 ;a 9
if(P[i]+Q[i]==1)//daca apare doar in unul dintre P sau Q
ok=0;//x nu e magic
if(ok) X[++k]=x;//x este magic, il adaug in X
}
}
int main()
{
int k,X[100];
magice(500,9,7,k,X);
for(int i=1;i<=k;i++)
cout<<X[i]<<" ";
return 0;
}
|