C. Partitioning the Array
题目
解题思路
对于两个数 x 、 y x、y x、y,如果 x x x mod m m m ≡ y y y mod m m m,则有 ( y − x y - x y−x) ≡ 0 (mod m m m),则 m m m 是 (y - x) 的因数,所有因数的最大公约数非 1 则是一种方案
代码实现
void solve()
{int n; cin >> n;vector<int> a(n + 1);for (int i = 1; i <= n; i++) cin >> a[i];ll cnt = 0;for (int k = 1; k <= n; k++) {if (n % k == 0) {int g = 0;for (int i = 1; i + k <= n; i++) {g = gcd(g, abs(a[i + k]- a[i]));}cnt += (g != 1);}}cout << cnt << endl;
}