计算出最小的 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; } }