问题描述
给你一个非零整数,让你求这个数的n次方,每次相乘的结果可以在后面使用,求至少需要多少次乘。如24:22=22(第一次乘),2222=24(第二次乘),所以最少共2次;
问题很绕,一开始我也不清楚题目想表达什么,后来看了一篇文章之后懂了:见下面的链接:文章
自己的代码如下:
#include<stdio.h>
#include<string.h>
#include<math.h>
void Solve(int n, int count);
int main()
{
int m = 0;
int n = 0;
scanf("%d",&m);
int i = 0;
for(i = 0; i<m; i++)
{
int count = 0;
scanf("%d",&n);
Solve(n, count);
}
return 0;
}
void Solve(int n, int count)
{
if(n==1)
{
printf("%d\n",count) ;
return ;
}
if(n%2==0)
{
Solve(n/2, count+1);
}
if((n%2==1)&&(n!=1))
{
Solve(n/2,count+2);
}
}