题目如下

首先理解题目;可以知道可分解的数字必须满足两个条件
第一:序列的长度至少为3
第二:序列中数字是递增的(相差为1)意思就是连在一起的
通过题目给的案例来理解一下:
第一个数字3 ->[-2 -1 -1 0 1 2 3]
可以
第二个数字6->[-5,-4,-3,-2,-1,0,1,2,3,4,5,6]
可以
可以发现两边可以构造出对称,从而可以约掉,最后仅剩需要的数字
那有没有条件不满足呢?有的兄弟有的
我们发现题目中给出的3
可以,大于的也可以,所以尝试反向推导,再由于题目中的A[N]
都为正整数,所以只需要推导一下1和2
即可知道全部情况
2->[-1 0 1 2]
满足
1->[0,1]只能通过0和1来构造,但是题目要求序列至少为3由此可得除了1之外的其他正整数都满足题目的情况
最终的解就是求出除1之外有多少个正整数
AC代码:
cpp
#include<iostream>
#include<algorithm>
#include<cmath>
#include<climits>
using namespace std;
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int N;cin>>N;
int ans=0;
for(int i=1;i<=N;i++){
int x;cin>>x;
if(x!=1) ans++;
}
cout<<ans;
return 0;
}