【无标题】

HJ141 小红的二叉树

  • 题目
  • 题解(28)
  • 讨论(17)
  • 排行

中等 通过率:31.35% 时间限制:1秒 空间限制:1024M

知识点数论

校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。

描述

小红想知道,深度为 nn 的++满二叉树++ [1][1]有多少条长度为 22 的++简单路径++ [2][2]?由于答案可能很大,请将答案对 (109+7)(109+7) 取模后输出。

在本题中,两条简单路径所包含的点集不同时,被视为不同的。例如,路径 u−vu−v 与路径 v−uv−u 被视为相同的,因为它们均包含点 uu 与点 vv。

一棵深度为 hh 的++满二叉树++ [1][1]由恰好 2h−12h−1 个节点组成,每一个节点要么是叶子节点,要么有 22 个儿子,并且全部叶子节点的深度均为 hh。
++简单路径++[2][2]是指这样一条路径,其经过的顶点和边互不相同。

输入描述:

在一行上输入一个正整数 n(1≦n≦104)n(1≦n≦104) 代表满二叉树的深度。

输出描述:

输出一个整数,代表深度为 nn 的满二叉树中,长度为 22 的简单路径的数量。由于答案可能很大,请将答案对 (109+7)(109+7) 取模后输出。

示例1

输入:

复制代码
1

复制输出:

复制代码
0

复制说明:

复制代码
在这个样例中,深度为 11 的满二叉树只有 11 个节点,所以没有长度为 22 的简单路径。

示例2

输入:

复制代码
3

复制输出:

复制代码
7

复制说明:

复制代码
在这个样例中,所给出的满二叉树如下图所示:
cpp 复制代码
// 从深度为2开始,当前叶子节点为2个。每加一层,每个叶子节点会增加三条路径
#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
int n;
int main(){
    cin>>n;
    if(n==1) cout<<0;
    else if(n==2) cout<<1;
    else{
        long long yezi=2,ans=1;
        for(int i=3;i<=n;i++){
            ans=(ans+yezi*3)%mod;
            yezi=(yezi*2)%mod;
        }
        cout<<ans%mod;
    }
    return 0;
}
相关推荐
weixin_5134499611 小时前
walk_these_ways项目学习记录第九篇(通过行为多样性 (MoB) 实现地形泛化)--学习算法
学习·算法·机器学习
fish_xk11 小时前
c++内存管理
开发语言·c++·算法
Tisfy12 小时前
LeetCode 3740.三个相等元素之间的最小距离 I:今日先暴力,“明日“再哈希
算法·leetcode·哈希算法·题解·模拟·遍历·暴力
汀、人工智能12 小时前
[特殊字符] 第77课:最长递增子序列
数据结构·算法·数据库架构·图论·bfs·最长递增子序列
网域小星球12 小时前
C语言从0入门(十)|二维数组详解与矩阵实战
c语言·算法·矩阵·二维数组·数组遍历
澈20712 小时前
堆排序:高效构建大顶堆实战
数据结构·算法·排序算法
chh56312 小时前
C++--内存管理
java·c语言·c++·windows·学习·面试
Yungoal12 小时前
C++ 标准模板库STL(Standard Template Library)
c++·哈希算法·散列表
我真不是小鱼12 小时前
cpp刷题打卡记录27——无重复字符的最长子串 & 找到字符串中所有字母的异位词
数据结构·c++·算法·leetcode
XuecWu312 小时前
原生多模态颠覆Scaling Law?解读语言“参数需求型”与视觉“数据需求型”核心差异
人工智能·深度学习·算法·计算机视觉·语言模型