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