Powered by:AB_IN 局外人
第一场
光签到了,还没来得及补题,没想到130分还能73。。。
A 牛牛的密码
纯模拟
s
=input()
l1
=[]
l2
=[]
l3
=[]
l4
=[]
ans
=0
for i
in s
:
if 'a'<=i
<='z':
l1
.append
(i
)
elif 'A'<=i
<='Z':
l2
.append
(i
)
elif '0'<=i
<='9':
l3
.append
(i
)
else:
l4
.append
(i
)
if l1
:
ans
+=1
if l2
:
ans
+=1
if l3
:
ans
+=1
if l4
:
ans
+=1
print(f
"password level:{ans}")
if l1
:
print("".join
(l1
))
else:
print("(Null)")
if l2
:
print("".join
(l2
))
else:
print("(Null)")
if l3
:
print("".join
(l3
))
else:
print("(Null)")
if l4
:
print("".join
(l4
))
else:
print("(Null)")
第二场
因为失误扔了70分,我是废物。
A 面试
纯模拟
for _
in range(int(input())):
s
=input()
if s
.count
("D")>=1 or s
.count
("C")>=2:
print("failed")
elif s
.count
("A")>=3 and "D" not in s
:
print("sp offer")
else:
print("offer")
B 纸牌游戏
这个题一时冲动用
w
h
i
l
e
while
while写的,结果写了个死循环。。 思维题,先给数组升序,让他们有单调的性质,方便后面处理。从第一个人开始,他可以拿
a
[
i
]
a[i]
a[i]个牌,后面的每一个人都可以从第一个人这里拿
1
1
1张牌,所以显而易见,我们需要比较两个值的大小
a
[
i
]
a[i]
a[i]和
n
−
i
−
1
n-i-1
n−i−1(他左边的人数)
如果
a
[
i
]
<
n
−
i
−
1
a[i] \lt n-i-1
a[i]<n−i−1 ,说明这个人终究会被淘汰,拿的牌比被拿的牌少。如果
a
[
i
]
≥
n
−
i
−
1
a[i] \ge n-i-1
a[i]≥n−i−1 ,说明这个人不会被淘汰,那么他后头的人更不会被淘汰,所以直接输出连带这个人和后面人的数量即可。
n
=int(input())
lst
=list(map(int,input().split
()))
lst
.sort
()
for i
in range(n
):
if lst
[i
]>=n
-i
-1:
print(n
-i
)
break
C 纸牌游戏
m
<
2
m < 2
m<2时,这时的
C
C
C的还没被淘汰,所以还得加上
m
>
=
2
m>=2
m>=2时,这时
C
C
C的已经被淘汰了,所以降序排序后,就一直取前
x
+
y
x+y
x+y的数即可,快速幂写一下就行了。
#include<bits/stdc++.h>
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimization("unroll-loops")
using namespace std
;
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define ll long long
#define ull unsigned long long
#define ld long double
#define db double
#define rep(i, l, r) for (int i = l; i <= r; i++)
#define rep1(i, a, n) for (int i = a; i < n; i++)
#define per(i, l, r) for (int i = l; i >= r; i--)
#define per1(i ,a, n) for (int i = a; i > n; i--)
#define mset(s, _) memset(s, _, sizeof(s))
#define pb push_back
#define pii pair <int, int>
#define mp(a, b) make_pair(a, b)
#define sd(x) scanf("%d",&(x))
#define slld(x) scanf("%lld",&(x))
#define sdd(x,y) scanf("%d%d",&(x),&(y))
#define sc(s) scanf("%s",(s))
#define pd(x) printf("%d\n",(x))
#define plld(x) printf("%lld\n",(x))
#define pdk(x) printf("%d ",(x))
const int inf
=0x3f3f3f3f;
namespace IO
{
char ibuf
[1<<21],*ip
=ibuf
,*ip_
=ibuf
;
char obuf
[1<<21],*op
=obuf
,*op_
=obuf
+(1<<21);
inline char gc(){
if(ip
!=ip_
)return *ip
++;
ip
=ibuf
;ip_
=ip
+fread(ibuf
,1,1<<21,stdin);
return ip
==ip_
?EOF:*ip
++;
}
inline void pc(char c
){
if(op
==op_
)fwrite(obuf
,1,1<<21,stdout),op
=obuf
;
*op
++=c
;
}
inline ll
read(){
ll x
=0,ch
=gc(),w
=1;
for(;ch
<'0'||ch
>'9';ch
=gc())if(ch
=='-')w
=-1;
for(;ch
>='0'&&ch
<='9';ch
=gc())x
=x
*10+ch
-48;
return w
*x
;
}
template<class I>
inline void write(I x
){
if(x
<0)pc('-'),x
=-x
;
if(x
>9)write(x
/10);pc(x
%10+'0');
}
class flusher_{
public:
~flusher_(){if(op
!=obuf
)fwrite(obuf
,1,op
-obuf
,stdout);}
}IO_flusher
;
}
using namespace IO
;
ll qm
(ll a
, ll b
,ll c
){
ll ret
=1%c
;
while(b
){
if(b
&1)
ret
=ret
*a
%c
;
a
=a
*a
%c
;
b
=b
>>1;
}
return ret
;
}
const int N
=1e6+10;
const int mod
=1e9+7;
ll n
,m
,x
,y
,a
[N
],ans1
,ans2
,ans
;
int main()
{
n
=read();m
=read();x
=read();y
=read();
rep(i
, 1, n
) {
a
[i
]=read();
}
sort(a
+1,a
+1+n
,greater
<ll
>());
rep(i
, 1, n
){
if(i
<=x
) ans1
=(ans1
+a
[i
])%mod
;
if(i
>x
&& i
<=x
+y
) ans2
=(ans2
+a
[i
])%mod
;
}
if(m
< 2){
rep(i
, x
+y
+1, n
){
ans
=(ans
+a
[i
])%mod
;
}
}
write((ans
%mod
+ans1
*qm(3,m
,mod
)%mod
+ans2
*qm(2,m
,mod
)%mod
)%mod
);
return 0;
}
完结。