不知道为什么TLE了两个点,求大佬看看!!!
#include<iostream>
#include<string.h>
#include<string>
using namespace std;
long long Change(long long l, long long r, string str)
{
long long sum = 0;
long long begin = l;
if (r - l > 4)
{
begin = r - 4;
}
for (long long i = begin; i < r; i++)
{
sum = sum * 10 + str[i] - '0';
}
return sum%10000;
}
int main()
{
string str;
getline(cin, str);
//存转化的数字
long long *result=(long long *)malloc(sizeof(long long )*str.length());
//存符号
char* sign = (char*)malloc(sizeof(int) * str.length());
int re_len = 0;
int sg_len = 0;
long long len =str.length();
for (long long index = 0; index < len;)
{
long long l = index;
while (index < len && str[index] >= '0' && str[index] <= '9')
{
index++;
}
result[re_len++] = Change(l, index, str);
if (sg_len > 0)
{
if (sign[sg_len - 1] == '*')
{
result[re_len - 2] = (result[re_len - 1] * result[re_len - 2]) % 10000;
re_len--;
}
}
if (index < len)
{
sign[sg_len++] = str[index];
index++;
}
}
for (long long i = 0; i < re_len; i++)
{
result[i + 1] = (result[i] + result[i + 1]) % 10000;
}
cout << result[re_len - 1] << endl;
return 0;
}