math.h文件中含有乘方(包括开方)的库函数
安陆网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站建设等网站项目制作,到程序开发,运营维护。成都创新互联自2013年起到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联。
表示为:pow(x,y)
其中x和y都是双精度浮点(double)型,x是底数,y是指数(如果是小数即为开方)
表示为:double pow(double x, double y);
拓展资料
C语言pow()函数:求x的y次方(次幂)
头文件:
pow() 函数用来求 x 的 y 次幂(次方),其原型为:
pow()用来计算以x 为底的 y 次方值,然后将结果返回。设返回值为 ret,则 ret = xy。
实例:
输出结果:
C语言sqrt()函数:求给定值的平方根
头文件:
sqrt() 用来求给定值的平方根,其原型为:
实例计算200 的平方根值。
输出结果:
方法1:
递归、循环、楼上的说的很详细了
方法2:
高精度+二分
下附法2的程序,大概在x=5000时可以1s跑出(我的7年老电脑上。。。)
你的机子肯定能跑更大的。。。
结果的位数如果不够在maxn那里改,不过谁也算不出1000w位吧,应该够了。。。
在文件"hello.in"中输入,输出在"hello.out"
#includestdio.h
#define
maxn
10000000
#define
max(a,b)
ab?a:b
int
x,a[maxn],b[maxn],o;
int
ans[maxn],p;
int
s3[maxn];
void
Mult(int
s1[],int
*l1,int
s2[],int
l2)
{
int
i,j;
for(i=1;
i=*l1+l2+2;
i++)
s3[i]=0;
for(i=1;
i=*l1;
i++)
for(j=1;
j=l2;
j++)
s3[i+j-1]+=s1[i]*s2[j];
j=*l1+l2-1;
for(i=1;
i=j;
i++)
if(s3[i]9)s3[i+1]+=s3[i]/10,s3[i]%=10,j=max(j,i+1);
for(i=1;
i=j;
i++)
s1[i]=s3[i];
*l1=j;
}
void
Init(void)
{
int
i,j=0,k;
i=x;
p=1;
ans[1]=1;
for(;i;i=i1)
a[++j]=i1;
while(x)
b[++o]=x%10,x/=10;
for(i=j;
i;
i--)
{
Mult(ans,p,ans,p);
if(a[i])
Mult(ans,p,b,o);
}
for(i=p;
i=1;
i--)
printf("%ld",ans[i]);
printf("\n");
}
int
main(void)
{
freopen("hello.in","r",stdin);
freopen("hello.out","w",stdout);
scanf("%ld",x);
Init();
return
0;
}
C语言中表达n次方可以用pow函数。
函数原型:double pow(double x, double y)
功 能:计算x^y的值
返 回 值:计算结果
举例:
double a;a = pow(3.14, 2); // 计算3.14的平方,并将结果保存在变量a中
注:使用pow函数必须将头文件#includemath.h包含进源文件中