设m=2^100,两边取以10为底的对数得lgm=100lg2=100×0.3010=30.10查反对数表或使用计算器即可求得m=1.2589254×10^30;即2得100次方是1.2589254×10^30,这是一个31位数啊!
答案应该是这样的:1267650600228229401496703205376
2的100次方就是100个2
相乘,可转化成是50个4相乘,再转化25个16相乘,再可以转化为12个256相乘再乘16,再转化为6个65536相乘再乘16,再进一步转化为3个4294967296相乘再乘16,最后一个就较简单了。直接计算出来就行了。
#include
#include
#include "2^n\n.h"
using namespace std;
void twos(int k)
{
int ia[65535]={1}, i,j;
for(i=0;i
for(j=0;j<65535;j++)
{
ia[j]*=2;
}
for(j=0;j<65535;j++)
{
if(ia[j]>=10)
{
ia[j+1]+=ia[j]/10;
ia[j]%=10;
}
}
}
i=65535;
while(! ia[--i]);
i++;
while(i)
{
cout<
cout<
}
int main(int argc,char * argv[])
{
twos(atoi(argv[1]));
return 0;
}
n::n(void)
{
}
n::~n(void)
{
}
1267650600228229401496703205376
不解释……
科学计算机算出来的1.267650600000000000000000000000