文章

49

粉丝

140

获赞

27

访问

15.8k

头像
斐波那契数列 题解:两种思路
P1111 云南大学机试题
发布于2024年3月25日 15:38
阅读数 198

1.直接 unsigned long long ,适合求位数小的
#include <iostream>
#include <string.h>
using namespace std;

int main(){
	unsigned long long int a[71];
	a[0]=1;
	a[1]=1;
	a[2]=2;
	for(int i=3;i<=70;i++)
		a[i]=a[i-1]+a[i-2]+a[i-3];
	int n;
	while(cin >>n){

		cout << a[n] <<endl;

	}
}

2. 用数组,适合求位数大的

#include <iostream>
#include <string.h>
using namespace std;

int main(){

int n;
char a[100][100];
for(int i=0;i<100;i++)
	for(int j=0;j<100;j++)
		a[i][j]='0';
a[1][0]='1';
a[2][0]='1';
a[3][0]='2';
for(int i=4;i<=72;i++){
	for(int j=0;j<=72;j++){
	
		if(a[i-1][j]-'0'+a[i-2][j]-'0'+a[i-3][j]-'0'>=20){
			a[i][j+1]+=2;
			if(a[i][j]!='0'){
				a[i][j]=a[i][j]+a[i-1][j]-'0'+a[i-2][j]-'0'+a[i-3][j]-'0'-20;
				if(a[i][j]>'9')
				{
					a[i][j]=a[i][j]-10;
					a[i][j+1]=a[i][j+1]+1;
				}
			}//81  149 274
			else
			a[i][j]=a[i][j]+a[i-1][j]-'0'+a[i-2][j]-'0'+a[i-3][j]-'0'-20;...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发