Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- const ll k = 30;
- const ll N = 1e5;
- const ll ZERO = 0;
- const ll mx =10000025;
- ll table[N][k + 1];
- vector<ll>Arr(mx+10);
- const ll mod = 1000000007;
- void build()
- {
- ll n = Arr.size();
- for(int i = 0; i < n; i++)
- table[i][0] = Arr[i]%mod;
- for(int j=1;j<=k;j++)
- {
- for(int i=0;i<=n-(1<<j);i++)
- table[i][j]=__gcd(table[i][j - 1],table[i+(1<<(j-1))][j-1])%mod;
- }
- }
- int main()
- {
- ll t;
- cin>>t;
- while(t--)
- {
- ll n,a;
- cin>>n;
- ll div = 1;
- for(ll i=0; i<n; i++)
- {
- cin>>a;
- div=(div*a)%mod;
- }
- Arr.push_back(div%mod);
- }
- build();
- ll L=0,R= Arr.size()-1;
- for(ll i = 0; i < 1; i++)
- {
- ll answer = ZERO;
- for(int j = k; j >= 0; j--)
- {
- if(L + (1 << j) - 1 <= R)
- {
- answer = __gcd(answer, table[L][j])%mod;
- L += (1 << j)%mod;
- }
- }
- cout << answer%mod << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement