NYOJ 46(最小乘法次数)
#include<stdio.h>
int My_strtol(int m)
{
int num[20];int i=0,j,count=0;
while(m>0)
{
num[i++]=m%2;
m/=2;
}
for(j=0;j<i;j++)
if(1==num[j]&1)
count++;
return count;
}
int My_Count(int m)
{
int num[20];int i=0;
while(m>0)
{
num[i++]=m%2;
m/=2;
}
return i;
}
int main()
{
int m,n,ans1,ans2;
scanf("%d",&m);
while(m--)
{
scanf("%d",&n);
ans1=My_strtol(n);
ans2=My_Count(n);
printf("%d\n",ans1+ans2-2);
}
return 0;
}
作者:火星十一郎
本文版权归作者火星十一郎所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

浙公网安备 33010602011771号