NYOJ-46:最少乘法次数

描述

给你一个非零整数,让你求这个数的n次方,每次相乘的结果可以在后面使用,求至少需要多少次乘。如24:2*2=22(第一次乘),22*22=24(第二次乘),所以最少共2次;

               

输入
第一行m表示有m(1<=m<=100)组测试数据;
每一组测试数据有一整数n(0
输出
输出每组测试数据所需次数s;
样例输入
3234
样例输出
122


#include

int main()
{
	int t,n,cnt;
	scanf("%d",&t);
	while(t--)
	{
		cnt = 0;
		scanf("%d",&n);
		while(n!=1)
		{
			
			if (n%2==1)	//如果n为奇数即需要加2,不能对称的分,如3分为2和1两个不一样
				cnt+=2;
			else cnt++;//为偶数加1,对称的,两边都一样
			n/=2;
		}
		printf("%d\n",cnt);
	}
}



你可能感兴趣的:(数论)