1.练习项目:
问题描述
定义一种特殊的整数序列:这种序列由连续递增的整数组成,并满足以下条件:
- 序列长度至少为 3。
- 序列中的数字是连续递增的整数(即相邻元素之差为 1),可以包括正整数、负整数或 0。
例如,[1,2,3]、[4,5,6,7] 和 [−1,0,1] 是符合条件的序列,而 [1,2](长度不足)和 [1,2,4](不连续)不符合要求。
现给定一组包含 N 个正整数的数据 A1,A2,...,AN。如果某个 Ai 能够表示为符合上述条件的连续整数序列中所有元素的和,则称 Ai 是可分解的。
请你统计这组数据中可分解的正整数的数量。
输入格式
输入的第一行包含一个正整数 N,表示数据的个数。
第二行包含 N 个正整数 A1,A2,...,AN,表示需要判断是否可分解的正整数序列。
输出格式
输出一个整数,表示给定数据中可分解的正整数的数量。
2.选择课程
在蓝桥云课中选择题库,选择题号20545并开始练习。
3.开始练习
(1)源码 :
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const int N=1e5+10;
ll a[N];
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
ll n;cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
ll ans=0;
for(int i=1;i<=n;i++){
if(a[i]!=1){
ans++;
}
}
cout<<ans<<'\n';
return 0;
}
(2)检验结果
对此代码进行检验,检验后无报错,提交此代码,判题结果为正确100分。
(3)练习心得:
解题思路:思维题
除了 11 以外的任何一个数 x,都可以构造成:[−(x−1),−(x−2),...,−1,0,1,...,x−1,x] 使其总和为 x。
因此,仅需统计序列中非 1 的个数即可。
注意每段代码末尾的分号是否存在,如不存在则需即使补充;输入法是否切换为英语模式;语法是否错误。