4.21 每日一题题解

Posted qfnu-acm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4.21 每日一题题解相关的知识,希望对你有一定的参考价值。

勘测

涉及知识点:

  • 找规律/斐波那契数列

solution:

  • (先注意审题,这是一颗二叉树,而且模数是1e9+7)
  • (先推出来前5项,分别为1,3,6,11,19)
  • (没错,结束了,a[n] = a[n-1] + a[n-2] + 2)
  • (当然,如果想通过正确的姿势通过这道题,接着看:)
  • (只需要记录两个变量:有一个孩子的节点个数x,以及没有孩子的节点个数y)
  • (n = 2的时候,x = 1,y = 1)
  • (此时x和y都可以产生一个孩子节点,新产生节点个数 = (x + y))
  • (有一个孩子的节点就变成了有两个孩子的节点,并且无法再产生孩子)
  • (没有孩子的节点就变成了有一个孩子的节点 ,转移一下,式子就出来了:)
  • (x = y, y = (x+y))

暴力std:

#include <bits/stdc++.h>
using namespace std;
#define ll long long 
const ll mod = 1e10 + 7;
ll a[5000005];
int main()
{
    ll n;
    cin>>n;
    a[1] = 1,a[2] = 3;
    for(int i=3;i<=n;i++){
        a[i] = (a[i-1] + a[i-2] + 2);
        a[i] %= mod;
    }
    cout<<a[n]<<endl;
    return 0;
}

规范std:

#include <bits/stdc++.h>
using namespace std;
#define ll long long 
const ll mod = 1e10 + 7;
ll a[5000005];
int main()
{
    ll n,ans = 1;
    cin>>n;
    a[0] = 1,a[1] = 1;
    for(int i=2;i<=n;i++){
        a[i] = (a[i-1] + a[i-2])%mod;
        ans = (ans + a[i])%mod;
    }
    cout<<ans<<endl;
    return 0;
}

以上是关于4.21 每日一题题解的主要内容,如果未能解决你的问题,请参考以下文章

算法·每日一题(详解+多解)-- day14

寒假每日一题总结(第七天)

寒假每日一题总结(第十五天)

寒假每日一题回文平方(个人练习)详细题解+推导证明(第五天)

Java每日一题——>739. 每日温度(蛮力法,栈方法)

Java每日一题——>739. 每日温度(蛮力法,栈方法)

(c)2006-2024 SYSTEM All Rights Reserved IT常识