我这个为啥不行呢,哪里错了
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main() {
int ci[21] = { 1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,262144,524288,1048576 };
int n;
cin >> n;
for (int i = 0;i < n;i++)
{
int num;
cin >> num;
if (num > 1048576)
{
printf("-1");
continue;
}
int jie=0;
int cishu;
for (int j = 0;j <= 20;j++)
{
if (num > ci[j] && num <= ci[j + 1])
jie = j;
}
cishu = (ci[jie+1] - num) + 20 - jie-1;
printf("%d\n", cishu);
}
return 0;
}
二的次幂是能倍数上去的,所以我先加到2的次幂再乘