给出一个长度为 n 的序列 a 以及一个常数 x,你需要选择一个子串(连续的一段),满足其求和后不为 x 的倍数。求这个子串的最长长度。
输入
第一行仅有一个正整数t,表示测试数据的组数;
对于每组数据,第一行包含两个整数n和x;
第二行有n个整数,表示序列a。
其中1<=t<=20,1<=n,x,a[i]<=10000。
输出
共有 t 行,依次对应 t 组测试数据的结果。如果不存在满足条件的子串,输出 -1 。
输入样例
3
3 3
1 2 3
3 4
1 2 3
2 2
0 6
输出样例
2
3
-1
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int n,nums[100],d[100],m;
while(cin>>n)
{
for(int i=1;i<n;i++)
{
cin>>nums[i];
}
m=d[0] = nums[0];
for(int i=1;i<n;i++)
{
if(d[i-1]<0)
d[i] = nums[i];
else
d[i] = nums[i]+d[i-1];
m = max(d[i],m);
}
cout<<m<<endl;
}
return 0;
}
无法实现