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次方时,使用快速幂的计算方法。为了防止溢出,每次乘积以后都先取模,再进行下一次的运算并取模。