前100斐波那契数种有多少数是3的倍数

117 阅读1分钟

在这里插入图片描述
这题如果直接硬算,会越界
在这里插入图片描述
结果虽然对了,但是斐波那契数出现了负数
可以用这个思想: ( a + b ) % b = ( a % p + b % p ) % p (a+b)\%b=(a\%p+b\%p)\%p (a+b)%b=(a%p+b%p)%p

#include <iostream>
using namespace std;
long long f[200];
int ans = 0;
int main()
{
	f[1] = 1, f[2] = 2;
	for(int i = 3; i <= 100; i++)
	{
		f[i] = (f[i - 1] + f[i - 2]) % 3;
		if(f[i] == 0) ans ++;
		
	}
	cout << ans << endl;
	
}

在这里插入图片描述
我们看看更大的数结果,从下图可以看到直接运算是错的,即使用的long long
在这里插入图片描述
在这里插入图片描述