这篇文章是关于我们学校的一个OJ的题目的题解,大家可以点击链接这里进行访问。
题目简介:
本题目较为简单。
首先,先读一下题目。
我们可以把题目转化一下即为:
判断一个数的二进制中的 0 0 0 和 1 1 1 的个数哪个数的个数更多
我们主要问题就来到了如何转化一个数的二进制了,这里需要运用进制的概念,大家可以自行查阅,这里就不过多解释了。
我们知道,二进制就是要对这个数使用 2 2 2 进行短除法,所以我们可以写出如下的函数代码(写主函数也行,主要是函数用起来更方便)。
int lenth=0;
while(k){
lenth++;
if(k%2==1)ans[lenth]=1;
k/=2;
}
我们还要查询到底是 0 0 0 的数量多,还是 1 1 1 的数量多。(这个代码就不展示了)。
最后还有一步是很重要的,就是你每次的二进制数组是要清零的,可以使用 m e m s e t memset memset ,也可以这样写:
for(int i=1;i<=lenth;i++)ans[i]=0;
好像都一样……
在配上主函数,这道题目就轻松的结束了!
此篇题解如有错误,请私信:
ZKY2506–TBOJ
zhangkeyuan0623–luogu
我们下次再见!