AcWing 3588. 排列与二进制
原题链接
简单
作者:
NCpaste
,
2023-03-23 10:23:14
,
所有人可见
,
阅读 141
#include <stdio.h>
typedef long long ll;
ll m, n;
ll setVal(ll t) {
ll ze = 0;
while (t) {
// printf ("%lld ", t%2);
if (t%2 == 1) {
return ze;
}else {
t/= 2;
ze ++;
}
}
return ze;
}
ll getVal(ll a, ll b) {
if (a == 0) return 1;
ll tmp = 0;
for (int i = a; i > (n-m); i -- ) {
tmp += setVal(i);
}
return tmp;
}
int main ()
{
while (scanf ("%lld%lld", &n, &m) != EOF) {
if (n == 0 && m == 0) {
break;
}
if (m > n) {
ll t = n;
n = m;
m = t;
}
printf("%lld\n", getVal(n, m));
}
}
看题目,题目已经给出思路了