1 条题解
-
0
前面的作者好像很强,连打表找规律这一个方法都没有用到,那本蒟蒻就来写一波由打表找出规律的方法:
这题一看题目,就是数论之类的东西,所以作者的本能反应,就是打表找规律(打表大法好啊)。
(附赠作者打的表)
初看上面这一张表,我们会发现,除了1之外,所有n为奇数时:
那么,对于为偶数时,又有什么规律呢?
别急,我们把这些数字列进表格里来看
n= 1 2 3 4 5 6 7 8 9 10 11 12 f(n)= 1 2 4 6 10 14 20 欸,好像这些数字都存在着关系:
2好像是由1+1得来的
4好像是由2+2得来的
6好像是由2+4得来的
10好像是由4+6得来的
...
再仔细观察一下这组数的特点,就可以得出,当n为偶数时:
好的,这就可以写出这题了。(附上代码)
#include<bits/stdc++.h> using namespace std; long long s[1000001]; #define N 1000000000 int i,j,k,n; int main() { cin>>n; j=1; k=1; s[0]=1; for (i=1;i<=n;i++) { if (i%2==1) s[i]=s[i-1]; else s[i]=(s[i-1]+s[i/2])%N; } cout<<s[n]; return 0; }好的,让我们总结一下。 有些时候,我们并不能一眼看出公式(尤其是像我这么弱的人),所以这个时候,我们需要打表去观察,运用适合的方法,去找到那彼岸的规律。
- 1
信息
- ID
- 2174
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 9
- 标签
- 递交数
- 28
- 已通过
- 3
- 上传者