现在的位置: 首页 > 综合 > 正文

SNOJ上的1019,用Class的版本——思路清晰无比……

2013年03月09日 ⁄ 综合 ⁄ 共 1422字 ⁄ 字号 评论关闭

//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;

}

抱歉!评论已关闭.