【2021 CSP-J1 入门级第一轮】易错题解析

本文详细解析了2021 CSP-J1入门级竞赛中的三道易错题目,包括关于完全二叉树形态的问题、组合计数问题以及二进制数字处理的规律。通过公式推导和实例模拟,帮助考生理解和掌握解题方法。
部署运行你感兴趣的模型镜像

NO.1

如果一棵二叉树只有根结点,那么这棵二叉树高度为 1。请问高度为 5 的完全二叉树有( )种不同的形态?

ans.16

解析:通过公式可得.高度为5的的满二叉树叶子节点有2^(5-1)个,故答案为16

NO.2

6 个人,两个人组一队,总共组成三队,不区分队伍的编号。不同的组队情况有( )。

ans.15

解析:公式可得:

6个人里面选2个人不考虑先后顺序C_{6}^{2}=15,还剩4人里面选2人不考虑先后顺序C_{4}^{2}=6,最后2人不管怎么分都只有一种情况,但现在我们考虑的是存在队伍编号的故还要除A_{3}^{3}

\frac{C_{6}^{2}*C_{4}^{2}*C_{2}^{2}}{A_{3}^{3}}=15

NO.3

阅读部分:

#include <iostream>
using namespace std;
int n;
int a[1000];
int f(int x)
{
    int ret = 0;
    for (; x; x &= x - 1) ret++;
    return ret;
}

int g(int x)
{
    return x & -x;
}
​
int main()
{
    cin >> n;
    for (int i = 0; i < n; i++) cin >> a[i];
    for (int i = 0; i < n; i++)
        cout << f(a[i]) + g(a[i]) << ' ';
    cout << endl;
    return 0;
}

 这个阅读比较简单,简单模拟就可以发现规律

可以发现f((10)_{2})=1,f((100)_{2})=1,f((110)_{2})=2,

没错,二进制里有多少个‘1’,返回值就是几,

再看g((10)_{2})=(10)_{2},g((1100)_{2})=(100)_{2},g((110)_{2})=(10)_{2}

规律是找到二进制中第一个一出现的位置然后返回从这一位开始到最后一位的值(此时返回的值是默认转回了十进制的)

了解规律后可以开始做题了: )

当输入为 2 -65536 2147483647 时,输出为 (    )。

65552   32

模拟可得就不细说了

 

您可能感兴趣的与本文相关的镜像

ComfyUI

ComfyUI

AI应用
ComfyUI

ComfyUI是一款易于上手的工作流设计工具,具有以下特点:基于工作流节点设计,可视化工作流搭建,快速切换工作流,对显存占用小,速度快,支持多种插件,如ADetailer、Controlnet和AnimateDIFF等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值