NYOJ-46:最少乘法次数

来源:互联网 发布:美团大众数据 编辑:程序博客网 时间:2024/05/16 17:55
描述

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

               

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


#include<cstdio>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);}}