计算出最小的 N 的几次方能够包含 0-9 的所有数字(包含高精度计算算法)
程序代码://编一个程序,计算出最小的N的几次方能够包含0-9的所有数字
//理论上如果用动态数组可以实现任何一个数的表示! QQ:87835836 -- Rol
#include <stdio.h>
#define N 6 //基数
#define MAX 100 //数组最大长度
int main(void)
{
int check(int *num,int ws);
int num[MAX],i,jw=0,ws=1,tmp,count=0;
num[0]= 1; //将结果先初始化为1
do
{
for( i = 0; i < ws; i++)
{
tmp = N * num[i] + jw; //基数与当前所得临时结果的从低到高各位a[j-1]依次相乘(加上进位)
num[i] = tmp % 10; //更新临时结果的位上信息
jw = tmp / 10; //更新相乘后的进位
}
while(jw) //如果有进位
{
++ws; //新加一位,添加信息。位数增1
num[ws-1] = jw % 10; //将进位放在新加的结果位上
jw = jw/10; //看还能不能进位
}
count++;
}while(check(num,ws));
for(i=0;i<ws;i++)
printf("%d",num[ws-i-1]);
printf("\n是%d的%d次方!\n",N,count);
return 0;
}
int check(int *num,int ws)
{
int i,j,flag;
if(ws<10)return 1;
else
{
for(i=0;i<=9;i++)
{
flag=0;
for(j=0;j<ws;j++)
{
if(*(num+j)==i)
{
flag=1;break;
}
}
if(j==ws)return 1;
}
return flag?0:1;
}
}







