题目: 求长度为n的01序列,且其中不含111或者101这样串的个数对10007取模的值。
正解范围: 100%的数据,n<=10^18
下面是自己写的+拿Claude调的代码
但是无论怎么改输入12345678输出总是8102,正解是8766
#include <bits/stdc++.h>
using namespace std;
long long n, dp[100000005];
const int mod = 10007;
int main() {
cin >> n;
dp[0] = 1, dp[1] = 2, dp[2] = 4,dp[3]=6;
for (int i=4; i <10006;i++) {
dp[i] = (dp[i - 1] + dp[i - 3] + dp[i - 4])%mod;
}cout << dp[n%10006];
return 0;
}