NO.1
如果一棵二叉树只有根结点,那么这棵二叉树高度为 1。请问高度为 5 的完全二叉树有( )种不同的形态?
ans.16
解析:通过公式可得.高度为5的的满二叉树叶子节点有2^(5-1)个,故答案为16
NO.2
6 个人,两个人组一队,总共组成三队,不区分队伍的编号。不同的组队情况有( )。
ans.15
解析:公式可得:
6个人里面选2个人不考虑先后顺序=15,还剩4人里面选2人不考虑先后顺序
=6,最后2人不管怎么分都只有一种情况,但现在我们考虑的是存在队伍编号的故还要除
。
=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()=1,f(
)=1,f(
)=2,
没错,二进制里有多少个‘1’,返回值就是几,
再看g()=
,g(
)=
,g(
)=
规律是找到二进制中第一个一出现的位置然后返回从这一位开始到最后一位的值(此时返回的值是默认转回了十进制的)
了解规律后可以开始做题了: )
当输入为 2 -65536 2147483647 时,输出为 ( )。
65552 32
模拟可得就不细说了
本文详细解析了2021 CSP-J1入门级竞赛中的三道易错题目,包括关于完全二叉树形态的问题、组合计数问题以及二进制数字处理的规律。通过公式推导和实例模拟,帮助考生理解和掌握解题方法。
2363

被折叠的 条评论
为什么被折叠?



