您的位置:首页 > 其它

计算2的任意次方[通用版]

2016-03-20 10:52 204 查看
位数计算: [ N*lg2 ] +1
log10(2)=0.301029996

/*2的10万次方,控制台光标跳动约16次*/
#include <iostream>
#include <cmath>
using namespace std;
void f(int n)
{
int b,x,f,j,k,flag,v;
b=(int)(n*log10(2.0)+1);/*位数*/
char *a=(char *)malloc(b*sizeof(char));
for(v=0;v<b;v++)a[v]=0;
a[0]=1;
for(k=1,flag=0;k<=n;k++)/*监视哨初始指向数组首位*/
{
for(f=0,j=0;j<=flag || f>0;j++)/*j未到监视哨,或者有进位*/
{
x=a[j]*2+f;
f=x/10;/*进位*/
a[j]=x%10;
}
if(a[j]==0 || j==b)
flag=--j;
else
flag=j;
}
while(flag>=0) /*输出结果*/
{
printf("%d",a[flag]);
flag--;
}
}
int main()
{
int n;
cout<<"输入2的n次方(10万次光标跳动约16次):";
cin>>n;
f(n);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: