前言
本题是模拟高精度计算斐波那契数列的题,这种类型的题我以前做过类似的,所以不额外写题解了,题解给出以前的链接。
先放题目来源:P2437 蜜蜂路线
解题链接: 刷题Day13高精度斐波那契数列
本题我的AC代码:
#include <stdio.h>
#include <stdlib.h>
struct node{
int a[1000];
};
int main(int argc, char *argv[]) {
int m,n,i,j;
scanf("%d%d",&m,&n);
n=n-m;
m-=m;
struct node number[3];
int order1=0,order2=1,order3=2;
for(i=0;i<3;i++){
for(j=0;j<1000;j++){
if(i==0||i==1){
if(j==0)
number[i].a[j]=1;
else
number[i].a[j]=0;
}
else{
number[i].a[j]=0;
}
}
}
int add=0;
if(n==0||n==1){
printf("%d",1);
}else{
for(j=2;j<=n;j++){
add=0;
for(i=0;i<1000;i++){
if(number[order1].a[i]+number[order2].a[i]+add>=10){
number[order3].a[i]=number[order1].a[i]+number[order2].a[i]+add-10;
add=1;
}else{
number[order3].a[i]=number[order1].a[i]+number[order2].a[i]+add;
add=0;
}
}
order1++;
if(order1>2)
order1=0;
order2++;
if(order2>2)
order2=0;
order3++;
if(order3>2)
order3=0;
}
i=999;
while(number[order2].a[i]==0){
i--;
}
while(i>=0){
printf("%d",number[order2].a[i]);
i--;
}
}
return 0;
}