题解:P12252 [蓝桥杯 2024 国 Java B] 七边形
FireheartQwQ · · 题解
水一发。
思路
很明显,这是一道递归题,那要怎么递归呢?很简单,先观察图形,可以发现,每一个图形都是一个大的七边形,套上上一个图形,我们把它拆分成几个部分:
我们先看红色部分,不难看出,第
再看蓝色(画圈)部分,可以知道,它是上一个图形。
再看黄色部分,可以看出,它是红色和蓝色部分的重合部分,我们可以找一下规律:
- 第一个图形:
0 个 - 第二个图形:
1 个 - 第三个图形:
3 个 - 第四个图形:
5 个
可以发现,第
全部加起来,结果算出来
设第
红色部分加上蓝色部分减去黄色部分
也就等于:
化简:
等于:
算完了,但是还有几个注意事项:
- 初始化
f_0=1 。 - C++古训:不开()见祖宗。
上代码:
#include<cstdio>
long long a[20240605];
int main(){
a[1]=1;
for(int i=2;i<=20240601;i++)a[i]=i*5ll+a[i-1]-4ll;
printf("%lld\n",a[20240601]);//我是不会告诉你答案是1024204791742101的
return 0;
}