精度确认:位次转换,使用log10x^n,确认位次,这里讨论高位次。
idea:用数组储存一个很多位次的数,并且初始化首位为1;用循环对2进行累乘,进位通过除法实现,输出根据位次进行,并且应该是逆序输出。
int()
{
const int k=xxxx;//精确的位次
int a[k]={1}; //初始化为1,累乘中1乘以任何数都为1,并且这里0次方为1,妙哉。
key point:定义一个 变量 m 记录现有位次,t来表示进位数,并且用于下一次的运算。
for(int i=0;i<n;i++) //n次方,显然是乘n次。
{
int t=0;
for (int j=0;j<=m;j++) // 操作是把一个元素累乘后再分配进位和该位次数字 根据位次来看继续几次
{
t+=a[j]*2; //由于上次的积累,此后每次都会等于进位数+该位次的累乘结果
a[j]=t%10;
t/=10; //记录局部的进位数
}
if(t) a[++m]=1; //进位操作 ,一个数乘以2最多进一
}
输出部分:
逆序输出,关注控制位次的m来输出结果,若初始化m为1,则输出从a[m-1]开始。
for(int i=m;i>=0;i--)
cout<<a[i];
cout<<endl;