赞
踩
题意:
一个i数组的每一位对一个数x取模,求最大的x使数组成为会问数组。不存在输出0.
分析:
如果数组两侧对应的数不相等,则可以对两个数的差取模,若想满足每一对数,则对所有绝对值得差取最大公约数。
代码:
- #include <bits/stdc++.h>
-
- using namespace std;
-
- typedef long long ll;
-
- const int N=1e5+10;
-
- ll a[N];
-
- ll gcd(ll a,ll b)
- {
- return b?gcd(b,a%b):a;
- }
-
- void solve()
- {
- int t;
- cin>>t;
- while(t--)
- {
- int n;
- cin>>n;
- for(int i=0;i<n;i++) cin>>a[i];
- int ans=0;
- for(int i=0;i<n/2;i++)
- {
- int x=a[i];
- int y=a[n-i-1];
- if(x==y) continue;
- int res=abs(x-y);
- ans=gcd(ans,res);
- }
- cout<<ans<<'\n';
- }
- }
-
- int main()
- {
- ios::sync_with_stdio(false);
- cin.tie(0);
- cout.tie(0);
-
- solve();
-
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。