UVA2639


#include<iostream>
using namespace std;
int num[105];
int ans[105];
void init()
{
int temp=2;
for(int i=0; i<30; i++)
{
num[i]=temp-1;
temp*=2;
}
}
int main()
{
int t,n;
cin>>t;
init();
while(t--)
{
cin>>n;
if(n==0)
{
cout<<"0 []"<<endl;
continue;;
}
cout<<n<<" [";
int ct=0;
for(int i=29; i>=0; i--)
{
while(n>=num[i])
{
n=n-num[i];
ans[++ct]=i;
if(n==0)
break;
}
}
for(int i=ct;i>0; i--)
{
cout<<ans[i];
if(i!=0) cout<<",";
else cout<<"]"<<endl;
}
}
}
注意:while的使用 和++i i++
题意的理解

浙公网安备 33010602011771号