第一题数学公式推导,反正推完后就是(a*b)-a+b,没什么好说的,送分。
第二题懒得放题目,总而言之就是一道大模拟,判断循环,还挺麻烦的。。,但只要仔细都能打对。
主要是在每个循环判断能不能进,如果不能进就得停止累加时间复杂度,后面的E结束要对应前面的F,我是用了一个stack+结构体来判断这次能不能进循环,会不会停止,和更新答案了否(就是cifang有没有比之前+1),然后后面E结束循环时从栈顶开始减,就可以准确判断了。
代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int t;
struct one
{
int x,st;
char c;
};
int pre(string x)
{
if(x[2] == '1') return 0;
else
{
int now = 4,num = 0;
while(isdigit(x[now]))
{
num = num * 10 + (x[now] - '0');
if(num > 50) return -1;
now++;
}
return num;
}
}
int pre2(string x)
{
int now = 0,num = 0;
while(isdigit(x[now]))
{
num = num * 10 + (x[now] - '0');
now++;
}
return num;
}
int main()
{
// freopen("complexity.in","r",stdin);
// freopen("complexity.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);
cin >> t;
while(t--)
{
int l,cifang = 0,Maxc = 0,cnt = 0;
bool wa = 0,err = 0; string str;
int stop = 0;
cin >> l;
set<char> s; stack<one> w;
c