题解 | #排列与二进制# 需要找规律
排列与二进制
https://www.nowcoder.com/practice/647fc23dc4e147328cc484e3aeb6cc2a
#include <iostream>
#include <vector>
using namespace std;
int n, m;
// vector<int> mul(vector<int> &a, int b) //使用乘法超时,必须要找规律
// {
// vector<int> c;
// int t = 0;
// for(int i = 0; i < a.size() || t; i++)
// {
// if(i < a.size()) t += a[i] * b;
// c.push_back(t % 2);
// t /= 2;
// }
// return c;
// }
int main() {
while(cin >> n >> m && n)
{
// vector<int> res;
// int tmp = n - 1, count = 0, l = n - m + 1;
// while(n)
// {
// res.push_back(n % 2);
// n /= 2;
// }
// while(tmp >= l)
// {
// res = mul(res, tmp);
// tmp--;
// }
// for(int i = 0; i < res.size(); i++)
// if(res[i] == 0) count++;
// else break;
// cout << count << endl;
int count = 0;
for(int i = n; i >= n-m+1; i--)
{
int k = i;
while(k % 2 == 0)
{
count++;
k /= 2;
}
}
cout << count << endl;
}
}
// 64 位输出请用 printf("%lld")

阿里巴巴灵犀互娱公司福利 650人发布