题目大意:给你两个数字字符串,问是否可以转换(相邻相加)成两个相同的字符串,如果不可以输出 -1,如果可以问最大长度是多少。
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<iostream>
#include<math.h>
#include<queue>
#include<stack>
#include<cstring>
#include<string>
#include<ctime>
using namespace std;
typedef long long LL;
int numa[300010], numb[300010];
LL sa, sb;
int lena, lenb, ant = 0;
LL suma = 0, sumb = 0;
int main() {
cin >> lena;
for (int i = 0; i < lena; i++) {
scanf_s("%d", &numa[i]); suma += numa[i];
}
cin >> lenb;
for (int i = 0; i < lenb; i++) {
scanf_s("%d", &numb[i]); sumb += numb[i];
}
if (suma != sumb) {
cout << "-1"; return 0;
}//当两个字符串数字和不相等时,一定不能相互转换
int j = 0;
for (int i = 0; i < lena; i++) {
sa += numa[i];
while (sa > sb) sb += numb[j++];
if (sa == sb)ant++;
}
cout <<ant;
}