#include<bits/stdc++.h>
using namespace std;
int num(int x){
int n=0;
while(x)
{
if(x%2) n++;
x/=2;
}
return n;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
int A=a;
int num_1=num(a);
cout<<num_1<<endl;
int i=0;
while(a){
cout<<a%2<<"**"<<i<<endl;
if(a%2==0){
A+=(int)floor(pow(2,i)+0.5);
int B=A;
int j=b-num_1;
if(i>=j){
while(j){
A+=(int)floor(pow(2,j--)+0.5);
}
break;
}
}else if(a%2){
num_1--;
A-=(int)floor(pow(2,i)+0.5);
}
a/=2;
i++;
}
if(!A) {
A+=(int)floor(pow(2,i)+0.5);
b--;
while(b--){
A+=(int)floor(pow(2,b)+0.5);
}
}
cout<<A<<endl;
}
return 0;
}
/*
1111
111
10110 22
11100
*/
using namespace std;
int num(int x){
int n=0;
while(x)
{
if(x%2) n++;
x/=2;
}
return n;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
int A=a;
int num_1=num(a);
cout<<num_1<<endl;
int i=0;
while(a){
cout<<a%2<<"**"<<i<<endl;
if(a%2==0){
A+=(int)floor(pow(2,i)+0.5);
int B=A;
int j=b-num_1;
if(i>=j){
while(j){
A+=(int)floor(pow(2,j--)+0.5);
}
break;
}
}else if(a%2){
num_1--;
A-=(int)floor(pow(2,i)+0.5);
}
a/=2;
i++;
}
if(!A) {
A+=(int)floor(pow(2,i)+0.5);
b--;
while(b--){
A+=(int)floor(pow(2,b)+0.5);
}
}
cout<<A<<endl;
}
return 0;
}
/*
1111
111
10110 22
11100
*/
3万+

被折叠的 条评论
为什么被折叠?



