小明爱上了求和,这天他拿到一个数列和一个数字 CC,现在小明想要知道数列中连续数字和为 CC 的子数列有多少个,小明不会解决这个问题,聪明的你可以帮助小明解决这个问题吗?
输入
第一个输入一个n和c,表示数列的长度和目标值;
第二行输入n个数,表示这个数列。输出
输出一个数,表示和为c的连续子数列有多少个。数据范围
1<=n<=100000
1<=c<=1000000000
#include<bits/stdc++.h>
using namespace std;
int a[100005],w;
int main()
{
int n,c;
cin>>n>>c;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<n;i++)
{
int sum=c;
sum-=a[i];
if(sum<0||sum==0) continue;
for(int j=i+1;j<=n;j++)
{
sum-=a[j];
if(sum==0)
{
w++;
break;
}
if(sum<0) break;
}
}
cout<<w<<endl;
return 0;
}
1<=数列中元素<=1000000000
输入样例
4 5
1 4 1 4
输出样例
3
样例解释
和为5的连续子数列有
1 4
4 1
1 4
#include<bits/stdc++.h>
using namespace std;
int a[100005],w;
int main()
{
int n,c;
cin>>n>>c;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<n;i++)
{
int sum=c;
sum-=a[i];
if(sum<0||sum==0) continue;
for(int j=i+1;j<=n;j++)
{
sum-=a[j];
if(sum==0)
{
w++;
break;
}
if(sum<0) break;
}
}
cout<<w<<endl;
return 0;
}
这个代码为什么错了呢?