1. 程式人生 > >nyoj 46 最少乘法次數

nyoj 46 最少乘法次數

#include<stdio.h>
int main()
{
	int m,n,a[16],i;
	for(i=0,m=1;i<=15;i++,m*=2)
		a[i]=m;
	scanf("%d",&m);
	while(m--)
	{
		int sum;
		scanf("%d",&n);
		i=16;
		while(i--)
		{
			if(n>=a[i])
			{
				n-=a[i];
				sum=i;
				break;
			}
		}
		while(n!=0)
		{
			i=16;
			while(i--)
			{
				if(n>=a[i])
				{
					n-=a[i];
					sum++;
					break;
				}
				
			}
		}
		printf("%d\n",sum);
	}
}