【UOJ Easy Round #2】

时间:2021-11-22 04:11:03

然而UER我也照样跪……

第一题

  忘了取模sad

  || 操作符将整个区间分成了一些段,每个手机只会执行其中某一段,执行次数为这一段中&&的个数?+1?

  ans=ans*num[i]+1

  倒着搞了一遍就过了?……然而我并不知道为什么……

 //UER 2 A
#include<vector>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
using namespace std;
typedef long long LL;
inline int getint(){
int r=,v=; char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if (ch=='-') r=-;
for(; isdigit(ch);ch=getchar()) v=v*-''+ch;
return r*v;
}
const int N=1e5+,mod=;
/*******************template********************/ LL a[N],b[N],f[N],n; int main(){
#ifndef ONLINE_JUDGE
freopen("A.in","r",stdin);
// freopen("A.out","w",stdout);
#endif
n=getint();
char s[];
F(i,,n-){
scanf("%s",s);
if (s[]=='&') a[i]=;
else a[i]=;
}
// F(i,1,n) printf("%d ",a[i]); puts("");
int cnt=,tmp=;
F(i,,n){
if (a[i]) tmp++;
else b[++cnt]=tmp,tmp=;
}
// F(i,1,cnt)printf("%d ",b[i]); puts("");
LL ans=;
D(i,cnt,){
ans=(ans*b[i]+)%mod;
}
printf("%lld\n",ans);
return ;
}

然而后两题并不会做……又是一个坑啊……什么时候能填上呢?