这题如果直接硬算,会越界
结果虽然对了,但是斐波那契数出现了负数
可以用这个思想: ( 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