//By BodeSmile
//Start at : 2005-2-15 21:50
//Algorithm :
//note :
#include <iostream>
using namespace std;
class Base_12;
class Base_16
{
public:
Base_16(int a,int b,int c,int d)
{
num[0]=d;
num[1]=c;
num[2]=b;
num[3]=a;
}
void B16_Add()
{
if(num[0]<15)
{
num[0]++;
}
else if(num[1]<15)
{
num[0]=0;
num[1]++;
}
else if(num[2]<15)
{
num[0]=0;
num[1]=0;
num[2]++;
}
else
{
num[0]=0;
num[1]=0;
num[2]=0;
num[3]++;
}
}
friend bool Comp12And16(int i,Base_12 Num12,Base_16 Num16);
private:
int num[4];
};
class Base_12
{
public:
Base_12(int a,int b,int c,int d)
{
num[0]=d;
num[1]=c;
num[2]=b;
num[3]=a;
}
void B12_Add()
{
if(num[0]<11)
{
num[0]++;
}
else if(num[1]<11)
{
num[0]=0;
num[1]++;
}
else if(num[2]<11)
{
num[0]=0;
num[1]=0;
num[2]++;
}
else
{
num[0]=0;
num[1]=0;
num[2]=0;
num[3]++;
}
}
friend bool Comp12And16(int i,Base_12 Num12,Base_16 Num16);
private:
int num[4];
};
bool Comp12And16(int i,Base_12 Num12,Base_16 Num16)
{
int temp=0;
temp+=(i%10);
i/=10;
temp+=(i%10);
i/=10;
temp+=(i%10);
i/=10;
temp+=i;
int temp1,temp2;
temp1=Num12.num[0]+Num12.num[1]+Num12.num[2]+Num12.num[3];
if(temp!=temp1)
return false;
temp2=Num16.num[0]+Num16.num[1]+Num16.num[2]+Num16.num[3];
if(temp!=temp2)
return false;
return true;
}
int main()
{
//
Base_16 Num16(0,3,14,8);
Base_12 Num12(0,6,11,4);
int i;
for(i=1000;i<10000;i++)
{
if(Comp12And16(i,Num12,Num16))
cout<<i<<endl;
Num16.B16_Add();
Num12.B12_Add();
}
return 0;
}