比赛链接:ABC349
Problem A:
签到。
#include <bits/stdc++.h>
using namespace std;
const int maxn=105;
int A[maxn];
int main(){
int N;
cin>>N;
int ans=0;
for(int i=1;i<N;i++){
cin>>A[i];
ans-=A[i];
}
return 0;
}
Problem B:
开2个桶即可,具体看代码。
#include <bits/stdc++.h>
using namespace std;
int cnts[50],cnt[105];
int main(){
string S;
cin>>S;
for(char ch:S)
cnts[ch-'a']++;
for(int i=0;i<26;i++){
if(cnts[i])
cnt[cnts[i]]++;
}
for(int i=1;i<=S.size();i++){
if(cnt[i]!=0 && cnt[i]!=2){
cout<<"No"<<endl;
return 0;
}
}
cout<<"Yes"<<endl
return 0;
}
Problem C:
暴力即可。
#include <bits/stdc++.h>
using namespace std;
int main(){
string S,T;
cin>>S>>T;
int len=0;
for(auto ch:S){
if(len<3 && T[len]==toupper(ch))
len++;
}
if(len==3 || (len==2 && T[2]=='X'))
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
return 0;
函数可以把小写转大写。
Problem D:
只要,就找最大的合格的幂,然后更新和即可。
#include <bits/stdc++.h>
using namespace std;
pair<int,int> S[10000];//记录答案
int power[64];//2的幂次
int main(){
int p=1,M=0;//M是答案个数
for(int i=0;i<=63;i++){
power[i]=p;
p*=2;
}
int L,R;
cin>>L>>R;
while(L<R){
int mx=0;//枚举最大合格幂
while(L%power[mx]==0 && power[mx]*(L/power[mx]+1)<=R)
mx++;
mx--;
S[++M]=make_pair(L,power[mx]*(L/power[mx]+1));
L=power[mx]*(L/power[mx]+1);
}
cout<<M<<endl;
for(int i=1;i<=M;i++)
cout<<S[i].first<<' '<<S[i].second<<endl;
return 0;
}
当然,注意long long。
OK,以上就是本期的全部内容,我们下期再见!