狗の题解
2024-04-23 21:46:31
发布于:浙江
15阅读
0回复
0点赞
这道题本狗是用递归做的,这样子想起来简单一点,当然有别的方法,不多赘述!
开始正经讲题!
首先,这道题提到了十进制转二进制,那么我们就会想到一个东东——
辗转取余法(锵锵锵锵~那边用位权枚举的XX,闭嘴!)
他的过程其实是很简单的,就是
除二取余,去余再除
除二取余,去余再除
除二取余,去余再除*n直到为零
那么就有狗发现了(一大堆)
“他好像是一位位取的诶?那我一个一个判断不就好了吗?”
而且他的过程重复,相当于一直调用自身...
#include<bits/stdc++.h>
using namespace std;
long long a;
int solve(long long a)
{
int sum;
while(a!=0)
{
if(a%2)
{
sum++;
}
a/=2;
}
return sum;
}
int main()
{
cin>>a;
cout<<solve(a);
return 0;
}
全部评论 1
哇哦你真棒
2024-10-15 来自 广东
0
有帮助,赞一个