A
统计判断是不是由两种数构成,两种数的个数是不是相等
#include<bits/stdc++.h> using namespace std; int main() { int n,a[2]={0},cou=0,sum1=0,sum2=0,c; cin>>n; for(int i=0;i<n;i++){ cin>>c; if(c==a[0]){ sum1++; }else if(c==a[1]){ sum2++; }else{ if(cou==0){ a[0]=c; sum1++; }else if(cou==1){ a[1]=c; sum2++; } cou++; } } if(cou==2&&sum1==sum2){ cout<<"YES"<<endl; cout<<a[0]<<" "<<a[1]<<endl; }else{ cout<<"NO"<<endl; } return 0; }
B
循环判断两个大写字母间,有多少种不同的小写字母
#include<bits/stdc++.h> using namespace std; int main() { int n,maxx=0,i,j,coun=0; cin>>n; string s; cin>>s; int a[26]= {0}; for(int i=0; i<n; i++) { if(s[i]<='z'&&s[i]>='a') { if(a[s[i]-'a']==0) { coun++; } a[s[i]-'a']++; } if(s[i]<='Z'&&s[i]>='A') { maxx=max(maxx,coun); coun=0; for(j=0; j<26; j++) { a[j]=0; } } } maxx=max(maxx,coun); cout<<maxx<<endl; return 0; }
D
找出这组数的最大值,将其他数补成这个数,需要多少个数
#include<bits/stdc++.h> using namespace std; int main() { int n,sum=0,maxx=0,a,i; cin>>n; for(i=0;i<n;i++){ cin>>a; maxx=max(a,maxx); sum+=a; } cout<<maxx*n-sum<<endl; return 0; }
E
给定一个由RGBY四种颜色构成的(什么来着),有一部分损坏了,用!表示,计算将损坏的补好需要每种颜色各多少个,相邻的四个每种颜色只会出现一次
通过 第i个的颜色,与i+4,i-4 相等,补齐所有字符的颜色
#include<bits/stdc++.h> using namespace std; int main() { string s; cin>>s; int n=s.length(); int i,a[200]= {0}; for(i=0; i<n; i++) { if(s[i]=='!') { a[i]=1; } } for(i=0; i<n; i++) { if(s[i]!='!') { int j=i,k=i; while(j+4<n) { s[j+4]=s[j]; j+=4; } while(k-4>=0) { s[k-4]=s[k]; k-=4; } } } int R=0,Y=0,B=0,G=0; for(i=0; i<n; i++) { if(a[i]==1) { if(s[i]=='R') { R++; } else if(s[i]=='G') { G++; } else if(s[i]=='B') { B++; } else if(s[i]=='Y') { Y++; } } } cout<<R<<" "<<B<<" "<<Y<<" "<<G<<endl; return 0; }