起初想用高精度来做,但是题目要判断的是是否能被三整除,即使算出高精度后再进行除三计算好像也不太现实,
看过题解发现原来可以对每一次算出来的结果进行对三取余,这样能够减小数字的规模,同时这样算出的结果和
不取余的结果没有偏差。
1 #include <iostream> 2 using namespace std; 3 int f[1000010]; 4 int main(){ 5 f[0] = 7, f[1] = 11; 6 int temp; 7 while(cin >> temp){ 8 for(int i = 2; i <= temp; i ++) 9 f[i] = (f[i - 1] + f[i - 2]) % 3; 10 cout << f[temp] << endl; 11 } 12 return 0; 13 }