本文主要是介绍题目1466:排列与二进制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
解题思想:分别计算n和(n-m)的因子中2的个数s1,s2,然后用s1减去s2就可以了。判断一个数的二进制后面都多少个0其实就是判断该数分解质因数中2的个数。
C++代码:
#include<iostream>
using namespace std;
int getZeros(int n){int base=2,sum=0;while(n){sum+=n/base;n=n/base;}return sum;
}
int main(){int n,m;while(cin>>n>>m&&n){int s1=getZeros(n);int s2=getZeros(n-m);cout<<s1-s2<<endl;}return 0;
}
这篇关于题目1466:排列与二进制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!