从csdn中截取的 @[bupt_liunanfu](https://www.luogu.com.cn/user/1230109)
> 数据错误:程序在运行过程中,数据输入或输出出现了异常,例如输入了无效的数据或输出数据超出了预期范围。这种情况下,操作系统可能向程序发送 "IOT trap" 信号,通知程序数据错误并终止其运行。
by Razer_System @ 2024-01-26 08:30:26
@[bupt_liunanfu](/user/1230109)
### 关于RE
你的代码里有对于字符串进行erase操作的语句`s1[i].erase(b-1,1);`,此时RE就要检查是不是存在越界访问。
### 错误原因
输入数据:
```
a<b
EOF
b
EOF
60
```
应该输出`1`,但是你的程序输出了`0`。
------------
错误在第17行和第36行,应当都为:`if(b-1>=0) //b!=0`
~~(byd查了10分钟才找到)~~
by Nail9 @ 2024-01-28 15:00:59
@[Nail9](/user/1121118)
难蚌 半夜敲糊涂了 自己现在看都觉得离谱
by bupt_liunanfu @ 2024-01-30 01:33:01
@[bupt_liunanfu](/user/1230109) 你还是改错了(
AC:
```cpp
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
const int N=10010;
string s1[N];
string s2[N];
int main()
{
int i=0,j=0;
int sum=0;
while(getline(cin,s1[i]) && s1[i]!="EOF")
{
for(int b=0;b<(int)s1[i].length();b++)
{
if(s1[i][b]=='<')
if(b-1>=0)
{
s1[i].erase(b,1);
s1[i].erase(b-1,1);
b-=2;
}
else
{
s1[i].erase(b,1);
b--;
}
}
i++;
}
while(getline(cin,s2[j]) && s2[j]!="EOF")
{
for(int b=0;b<(int)s2[j].length();b++)
{
if(s2[j][b]=='<')
if(b-1>=0)
{
s2[j].erase(b,1);
s2[j].erase(b-1,1);
b-=2;
}
else
{
s2[j].erase(b,1);
b--;
}
}
j++;
}
int t;
cin>>t;
for(int l=0;l<min(i,j);l++)
{
int len=min(s1[l].length(),s2[l].length());
for(int r=0;r<len;r++)
if(s1[l][r]==s2[l][r])
sum++;
}
double kmp;
kmp=sum;
kmp=kmp*60/t;
sum=kmp;
if(kmp-sum>=0.5)
sum++;
cout<<sum<<endl;
return 0;
}
```
by Nail9 @ 2024-01-30 09:31:16