题目描述
有N个整数从左到右排成一行,如果某个数等于它前面的2个数的和,就称这个数是可以表示的数。问给定的数列里有多少个数是可以表示的数。
输入
第一行1个整数N,表示数列有多少个整数。1<=N<=10000。
第二行N个正整数,每个正整数不超过10000。
输出
一个整数,有多少可表示的数。
样例输入
8 5 2 2 3 4 8 7 16
样例输出
#include<iostream>
using namespace std;
int a[1000001],q[1000000],n,i,j,s;//分别代表原输入,判断是否可表示,数据个数,循环变量1、2,计数器
int main(){
cin>>n;//输入
for(i=1;i<=n;i++){
cin>>a[i];//输入第i项
if(q[a[i]])s++;//如果在以前的输入中可以被两个数相加,计数器+1
for(j=1;j<i;j++)q[a[i]+a[j]]=1;//把到目前可以表示的数都列出来
}cout<<s;//输出
}
3
提示
4=2+2;8=5+3; 7=3+4