蒟蒻提问,为什么最后输出的是n-m,计算的时候也是i=3,i<=n-m??
查看原帖
蒟蒻提问,为什么最后输出的是n-m,计算的时候也是i=3,i<=n-m??
463562
Dreamerlee✅楼主2021/2/22 12:46
for (int i = 3; i <= n - m; i++)
		high(i);

这里为什么不能i<=n,最后输出a[n][i]??

#include <iostream>
#include <cstdio>
using namespace std;
int n, m,a[100][100],len=1;
void high(int x)
{
	for (int i = 1; i <= len; i++)
		a[x][i] = a[x - 2][i] + a[x - 1][i];
	for (int i = 1; i <= len; i++)
	{
		if (a[x][i] > 9)//如果i的下标的数大于9需要进位了
		{
			a[x][i + 1] += a[x][i] / 10;//进位
			a[x][i] %= 10;
		}
	}
	if (a[x][len + 1])//如果最高位有数字了,代表需要对最高位的下一位进位,所以len++
		++len;
}
int main()
{
	cin >> m >> n;
	a[1][1] = 1, a[2][1] = 2, a[0][1] = 0;//初始化前3项
	for (int i = 3; i <= n - m; i++)
		high(i);
	for (int i = len; i > 0; i--)
		cout << a[n-m][i];
	return 0;
}
2021/2/22 12:46
加载中...