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;
}
 
      
     ta tính được a^1, a^2, a^4, a^8… rồi nhân vào theo biểu diễn nhị phân của b như bạn đã làm.
 ta tính được a^1, a^2, a^4, a^8… rồi nhân vào theo biểu diễn nhị phân của b như bạn đã làm. ) thì mỗi cụm đều có 7 chuỗi hạt, trừ chuỗi toàn đỏ, toàn lam và toàn trắng là 3 cụm mỗi cụm đúng 1 chuỗi. Vậy 3^7 - 3 chia hết cho 7, hay 3^7 = 3 (mod 7).
 ) thì mỗi cụm đều có 7 chuỗi hạt, trừ chuỗi toàn đỏ, toàn lam và toàn trắng là 3 cụm mỗi cụm đúng 1 chuỗi. Vậy 3^7 - 3 chia hết cho 7, hay 3^7 = 3 (mod 7).
 83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?
    83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?