给你一个非零整数,运算规则如下:
经过一次计算后可将得到的次幂任意相乘.
举例如下:
1.假设底数为2,则未计算前2的幂次只有1.(初始化)
2.2 * 2 = 4. 经过一次计算后,2的幂次共有1、2.(这称为第一次运算)
3.经过2*2=4 2*4=8 4*4=16 经过第二次计算后,2的幂次共有1、2、3、4.(这称为第二次运算)
4.以此类推,直到可以算出2的n次方.(这称为第k次运算)
经过一次计算后可将得到的次幂任意相乘.
举例如下:
1.假设底数为2,则未计算前2的幂次只有1.(初始化)
2.2 * 2 = 4. 经过一次计算后,2的幂次共有1、2.(这称为第一次运算)
3.经过2*2=4 2*4=8 4*4=16 经过第二次计算后,2的幂次共有1、2、3、4.(这称为第二次运算)
4.以此类推,直到可以算出2的n次方.(这称为第k次运算)
求至少需要多少次这样的运算可以得到这个数的n次方.
代码如下:
#include<iostream> #include<cstdio> using namespace std; int main() { freopen("Input.txt", "r", stdin); int N; scanf("%d", &N); while(N--) { int n, count = 0, sub = 1; scanf("%d", &n); for(int i = 0; ; ++i) { sub *= 2; count++; if(sub >= n) break; } printf("%d\n", count); } return 0; }