1.求幂函数 #include pow(a,b); 计算a的b次幂
2.error: invalid types 'int[int]' for array subscript| 记住这个错误吧,犯过好多次了
数组变量名不一致或者是没定义
数组空间不够
变量名和数组名重复定义
3.快速幂
快速幂本质上是一个倍增问题,比如说
要求6的34次方
如果34个6相乘,就很复杂
但是如果这样的话
34的二进制是100010
用二进制来算,就可以大大减少计算的次数
//n为二进制的一串数 while(n!=0){ int r=1; if(n%2==1){ //将二进制的某一位取模,如果是1的话,就说明这一位有数字1,然后就得数 r=r*a; } a=a*a; //不论n是否为1,a都继续乘a n=n%2; //n右移 return r; }
#include <iostream> using namespace std; #define N 100 void get_(int n, int binary[]) { int i = 0; while (n > 0) { binary[i] = n % 2; n = n / 2; i++; } // 输出二进制表示形式 for (int j = i - 1; j >= 0; j--) { cout << binary[j]; } } // 计算 m 的 n 次幂 long long quickPower(int a[], int n, int m) { int r = 1; for (int i = 0; i < n; i++) { if (a[i] % 2 == 1) { r = r * m; } m = m * m; } return r; } int main() { int n, m; // 输入 n 和 m cin >> n >> m; // 存储 n 的二进制表示形式 int binary[N]; get_(n, binary); cout << endl; // 计算 m 的 n 次幂 long long result = quickPower(binary, n, m); cout << "Result: " << result << endl; return 0; }
标签:binary,洛谷,int,n%,34,二进制,5.10,收获 From: https://www.cnblogs.com/sly-345/p/18185365