题目:求九位累进可除数。所谓九位累进可除数就是这样一个数:这个数用到1到9这九个数字组成,
每个数字刚好只出现一次。这九个位数的前两位能被2整除,前三位能被3整除......前N位能被N整除,
整个九位数能被9整除。
//题目:求九位累进可除数。所谓九位累进可除数就是这样一个数:这个数用到1到9这九个数字组成,
//每个数字刚好只出现一次。这九个位数的前两位能被2整除,前三位能被3整除......前N位能被N整除,
//整个九位数能被9整除。
//BY as1138 2011-10-16
#include <iostream>
using namespace std;
void pailie(int *ite,int str,int num);
void SwapInt(int &a,int &b);
bool IsOk(int *ite);
int main(void)
{
int iTem[9] = {1,2,3,4,5,6,7,8,9};
pailie(iTem,0,9);
return 0;
}
void SwapInt(int &a,int &b)
{
int tem;
tem = a;
a = b;
b = tem;
}
void pailie(int *ite,int str,int num)
{
if (str == num-1)
{
if(IsOk(ite))
{
int j = 0;
while (j!=9)
cout<<ite[j++];
cout<<endl;
}
}
for (int i=str;i!=num;++i)
{
SwapInt(ite[i],ite[str]);
pailie(ite,str+1,num);
SwapInt(ite[i],ite[str]);
}
}
bool IsOk(int *ite)
{
long tt = 0;
long lTen = 1;
for (int i=1;i!=9;++i)
{
for (int j=i;j!=-1;--j)
{
tt += ite[j]*lTen;
lTen *= 10;
}//end for j
if(tt %(i+1) != 0)
return false;
tt = 0;
lTen = 1;
}//end for i
return true;
}版权声明:本文为csy981848153原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。