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次方時,使用快速冪的計算方法。為了防止溢出,每次乘積以後都先取模,再進行下一次的運算並取模。