codeforces
一开始我只想着让她加 随便加几个应该就能得出答案了,没想太细,没有想到这个32768跟2的关系 32768是2的15次方 所以任何一个数 只要乘以2的15次方,就一定可以得到0,我们要让n加上1的次数控制在15以内,因为这个答案的最大值是15
浅看一下吧
#include<bits/stdc++.h>
using namespace std;
const int k=32768;
int f[10]= {0,32768,65536};
int main()
{
int i,j,m,n;
scanf("%d",&n);
int sum=0;
for(i=1; i<=n; i++)
{
scanf("%d",&m);
sum=0;
int w=abs(k-m),h,ans;
ans=w;
int flag=0;
h=m;
for(int v=0;v<=15;v++)
{
for(j=0; j<=15; j++)
{
int u=1<<j;
// printf("%d\n",m*u);
if((m+v)*u%f[1]==0)
{
ans=min(ans,j+v);
}
}
}
printf("%d ",ans);
}
}