算法原理:以2^10000为例
在最高数组位以2的幂次相乘,当最高位>10,将高位保存在低一位的数组中2^5 在数组中以23形式保存,最后以反向输出
/*在程序中如果要是表示2^1000次方形式,明显肯定溢出,如果用数组形式表示嗯*/ #include<stdlib.h> #include<stdio.h> #define ARRAY_LEN 4000 int main() { int ar[ARRAY_LEN]={0}; int i,j,print_flag=0,jinw; ar[ARRAY_LEN-1]=1; for(j=0;j<10000;j++) {//j代表的是次方数,i代表需要多长长度数组进行更新 jinw=0; for(i=ARRAY_LEN-1;i>=0;i--) { int tmp=ar[i]*2+jinw;//在这里2可以换成其他数<10 ar[i]=tmp%10; jinw=tmp/10; } } //print the value for(j=0;j<ARRAY_LEN;j++) { if(ar[j]!=0&&print_flag==0) print_flag=1; if(print_flag==1) printf("%d",ar[j]); } printf("\n"); return 0; }