1001.cpp
来自「非常好的C++学习源码,里面包括各种算法的实现,二叉的的前中后序遍历等」· C++ 代码 · 共 94 行
CPP
94 行
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n,i,j,k,b[1000],c[1000],d[1000],m,t,p,s1,l;
double s;
while(cin>>s>>n)
{
for (i=0;i<1000;i++)
d[i]=0;
l=0;
s1=int(s*10000+0.1);
while (s1!=0)
{
b[l]=s1%10;
s1=s1/10;
l++;
}
for (j=0;j<l;j++)
d[j]=b[j];
m=l;
for (i=1;i<=n-1;i++)
{
for (j=0;j<300;j++)
c[j]=0;
for (j=0;j<l;j++)
for (k=0;k<m;k++)
c[j+k]=c[j+k]+b[j] * d[k];
for (j=0;j<(l+m-1);j++)
d[j]=c[j];
for (j=0;j<(l+m-1);j++)
{
if (d[j]>=10)
{
d[j+1]=d[j+1]+d[j]/10;
d[j]=d[j]%10;
}
}
for (j=0;j<300;j++)
{
p=1;
for (k=0;k<300;k++)
{
if (d[j+k]!=0)
{
p=p+1;
break;
}
}
if (p==1)
{
m=j;
break;
}
}
}
p=1;
for (j=0;j<300;j++)
if (d[j]!=0)
{
t=j;
break;
}
if (m<=4*n)
{
cout<<".";
for (j=4*n-1;j>=t;j--)
cout<<d[j];
cout<<endl;
}
else
{
for (j=m-1;j>=4*n;j--)
cout<<d[j];
if (4*n>t)
{
cout<<".";
for (j=4*n-1;j>=t;j--)
cout<<d[j];
}
cout<<endl;
}
}
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?