當前位置:首頁 » 編程語言 » C語言實現快速冪
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

C語言實現快速冪

發布時間: 2023-02-26 04:02:23

A. 斐波那契數列的通項公式在c語言中如何表達

斐波那契數列在數學上的通項公式為

An=An-1+An-2

在C語言中,根據演算法實現不同,可以有很多種表達方式。以計算斐波那契第N項值為例,說明如下。

一、以數組方式實現:

intfn(intn)
{
int*a,i,r;
a=(int*)malloc(sizeof(int)*n);//分配動態數組。
a[0]=1;
a[1]=1;//初始化前兩項。
for(i=2;i<n;i++)
{
a[i]=a[i-1]+a[i-2];//這里就是通項公式的一種實現形式。
}
r=a[n-1];//保存結果
free(a);//釋放動態數組
returnr;//返回結果值。
}

二、以遞歸函數形式:

intfn(intn)
{
if(n==0||n==1)return1;//前兩項固定值。
returnfn(n-1)+fn(n-2);//通過遞歸調用實現通項公式。
}

三、注意事項:

1、方法有很多,不可能窮舉完成,寫代碼時要靈活使用。

2、例子中以int保存,限於整型範圍,計算很大值時會出現溢出。 根據實際需要選擇類型。

B. C語言有關快速冪的問題

type
arrty=array[1..10000] of longint;
var
n,mn,len,lenm,i,mnl:longint;
a,m:arrty;
procere mxm;
var
c:arrty;
i,j:longint;
begin
fillchar(c,sizeof(c),0);
for i:=1 to lenm do
for j:=1 to lenm do
begin
inc(c[i+j-1],m[i]*m[j]);
inc(c[i+j],c[i+j-1] div 10);
c[i+j-1]:=c[i+j-1] mod 10;
end;
lenm:=lenm+lenm+1;
while (lenm>1) and (c[lenm]=0) do
dec(lenm);
for i:=1 to lenm do
m[i]:=c[i];
end;
procere axm;
var
c:arrty;
i,j:longint;
begin
fillchar(c,sizeof(c),0);
for i:=1 to len do
for j:=1 to lenm do
begin
inc(c[i+j-1],a[i]*m[j]);
inc(c[i+j],c[i+j-1] div 10);
c[i+j-1]:=c[i+j-1] mod 10;
end;
len:=len+lenm+1;
while (len>1) and (c[len]=0) do
dec(len);
for i:=1 to len do
a[i]:=c[i];
end;
begin
fillchar(a,sizeof(a),0);
readln(mn,n);
mnl:=mn;
len:=0;
while mnl>0 do
begin
inc(lenm);
m[lenm]:=mnl mod 10;
mnl:=mnl div 10;
end;
a[1]:=1;
len:=1;
while n>0 do
begin
if n mod 2=1 then
axm;
n:=n div 2;
mxm;
end;
for i:=len downto 1 do
write(a[i]);
writeln;
end.

C. C語言:鍵入b、p、k(長整型,b、p>=0、k>0),求b^p mod k的值。咋編

要用「同餘定理」每算一步取余,否則會溢出。

代碼文本:

#include "stdio.h"

int main(int argc,char *argv[]){

int b,p,k,t;

printf("Enter b, p & k(int >=0)... ");

if(scanf("%d%d%d",&b,&p,&k)==3 && b>=0 && p>=0 && k>0){

printf("%d^%d mod %d = ",b,p,k);

for(t = p ? (b%=k) : 1;p>1;(t*=b)%=k,p--);

printf("%d ",t%k);

}

else

printf("Input error, exit... ");

return 0;

}

D. C語言如何實現冪運算

C語言中計算一個數的N次方可以用庫函數pow來實現。

函數原型:double pow(double x, double y);
功 能:計算x^y的值
返 回 值:計算結果

舉例如下:
double a = pow(3.14, 2); // 計算3.14的平方
註:使用pow函數時,需要將頭文件#include<math.h>包含進源文件中。

E. C語言里如何實現乘冪運算

用函數pow(x,2)表x的2次方
加上頭文件math.h

F. c語言計算一個數q的1次方到n次方的和,而q和n的數量級都是10的9次方,結果取模,怎麼減少時間呢

首先,將求和改為利用等比公式求和的公式來計算。其次,計算q的n+1次方時,使用快速冪的計算方法。為了防止溢出,每次乘積以後都先取模,再進行下一次的運算並取模。