Mọi người có thể chỉ ra lỗi sai trong đoạn code này của mình được không, không hiểu sao, mình nộp bài mà không qua hết các test:
Đề bài là tính a^b mod 10e9+7
#include <stdio.h>
const int M = 1000000007;
int b1[1000];
int size;
// ham nay chi la convert 1 so tu he 10 sang he 2, sau do minh luu vao mang b1 thoi
void convert_decima_binary(int n) {
int b2[1000];
int i = 0;
while(n > 0) {
b2[i] = n%2;
n = n/2;
i++;
}
int m = i - 1;
size = i - 1;
for( ; m >= 0 ; m--) {
b1[i - m - 1] = b2[m];
}
}
// đây là hàm chính của mình
int mod_exponent(int base, int exp) {
convert_decima_binary(exp);
int x = base;
int y = (b1[size] == 1 )? base : 1;
for(int i = size - 1 ; i >= 0 ; i--) {
x = (x*x)%M;
if(b1[i] == 1)
y = ( y == 1) ? x : (y*x)%M;
}
return y;
}
int main() {
int a,b;
scanf("%d %d",&a, &b);
int tmp = mod_exponent(a,b);
if (tmp < 0)
printf("%d", tmp + M);
else
printf("%d", tmp);
return 0;
}