可分解的正整数

作者: qiqi 分类: 基本数论 发布时间: 2025-10-28 17:13

提交链接

题目描述:定义一种特殊的整数序列,这种序列由连续递增的整数组成,并满足以下条件:
(1)序列长度至少为 3。
(2)序列中的数字是连续递增的整数(即相邻元素之差为 1),可以包括正整数、负整数或 0。
例如,[1,2,3]、[4,5,6,7] 和 [−1,0,1] 是符合条件的序列,而 [1,2](长度不足)和 [1,2,4](不连续)不符合要求。

现给定一组包含 N 个正整数的数据 A1,A2,…,AN。如果某个 Ai能够表示为符合上述条件的连续整数序列中所有元素的和,则称 Ai是可分解的。请你统计这组数据中可分解的正整数的数量。

#include <bits/stdc++.h>
using namespace std;

int main()
{
	int n, cnt = 0, a;
	scanf("%d", &n);

	for (int i = 0; i < n; i++)
	{
		scanf("%d", &a);
		if (a == 1)
			cnt++;
	}
	printf("%d\n", n - cnt);
	return 0;
}

形如 {−2,−1,0,1,2} 的和一定为 0。所以只需要在这样的序列后面加一个需要表示的正整数即可,比如要表示的是 3,所求序列是 {−2,−1,0,1,2,3}。那么只有 1 无法被表达出来,所以答案是数组 a 中所有不是 1 的数字的个数。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

标签云