40分,求助!!
查看原帖
40分,求助!!
819372
Eagle2012楼主2023/12/2 20:15
#include<bits/stdc++.h> 
#define N 5005 
using namespace std; 
int n; 
int len = 1, a[N][N]; 
string f[5005];

string add(string a, string b) { 
	string ans;
	
	int la = a.length();
	int lb = b.length();
	
	int i, j, jw = 0;
	
	for(i = la-1, j = lb-1; i >= 0 && j >= 0; i--, j--)//按位相加 
	{
		ans += (a[i] - '0'+ b[j]- '0' + jw) % 10 + '0';
		jw = (a[i] - '0'+ b[j]- '0' + jw) / 10;
	}
	while(i >= 0)//如果a位数还有剩余 
	{
		ans += (a[i] - '0'+ jw) % 10 + '0';
		jw = (a[i]- '0' + jw) / 10;
		i--;
	}
	while(j >= 0)//如果b位数还有剩余 
	{
		ans += (b[j] - '0' + jw) % 10 + '0';
		jw = (b[j]- '0' + jw) / 10;
		j--;
	}
	if(jw)	ans += '0' + jw;//进位不为0处理 
	reverse(ans.begin(), ans.end());//答案倒置
	return ans;//返回答案 
} 
int main()
{ 
	int n, i, m;
	cin >> m >> n;
	f[1] = 1;
	f[2] = 2; 
	for(i = 3; i <= m - n; i++)
		f[i] = add(f[i-1], f[i-2]);//递推 
	cout << f[m - n];//输出答案 
	return 0; 
}
2023/12/2 20:15
加载中...