Em đang làm bài cho 1 mảng gồm n số, trong đó:
h(x) là tích các số trong mảng
g(x) là ucln các số trong mảng
Tìm h(x) ^ g(x)
Đoạn code bên dưới của em hoàn thành xong thuật toán nhưng khi chạy nó không return về 0. Em kiểm tra thì thấy ở đoạn uc = gcd(uc, a[i]) nếu em gọi hàm theo kiểu gán vào 1 biến thế này thì sẽ sai.
Em phải làm thế nào ạ? Mong mọi người giúp đỡ
#include<bits/stdc++.h>
#define mod 1000000007
using namespace std;
int gcd(int a, int b){
while(a != b){
if(a>b) a = a % b;
else b = b % a;
}
return a;
}
int solve(int n, int a[]){
//find h(x)
int mul = 1;
for(int i=0;i<n;++i) mul = mul*a[i];
//find g(x)
int uc = gcd(a[0], a[1]);
for(int i=2;i<n;++i){
uc = gcd(uc, a[i]);
}
//find result
int res = 1;
while(uc != 0){
res = mul * res % mod;
uc--;
}
return res;
}
int main(){
int T, n;
cin >> T;
while(T--){
cin >> n;
int a[n];
for(int i=0;i<n;++i) cin >> a[i];
cout << solve(n, a) << endl;
}
return 0;
}

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?