C. Partitioning the Array

C. Partitioning the Array

题目

C. Partitioning the Array_第1张图片

解题思路

对于两个数 x 、 y x、y xy,如果 x x x mod m m m y y y mod m m m,则有 ( y − x y - x yx) ≡ 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;
}

你可能感兴趣的:(日常刷题,c语言,算法,开发语言)