A - DRM Messages
这道题主要是找两个字符串的有种联系
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int sum,sum_;
int main(){
string s;
cin>>s;
for(int i=0;i<s.length()/2;i++)
sum+=s[i]-'A';
for(int i=s.length()/2;i<s.length();i++)
sum_+=s[i]-'A';
for(int i=0;i<s.length()/2;i++)
s[i]=(s[i]-'A'+sum)%26+'A';
for(int i=s.length()/2;i<s.length();i++)
s[i]=(s[i]-'A'+sum_)%26+'A';
// cout<<s<<endl;
for(int i=0;i<s.length()/2;i++){
s[i]=(s[i]+s[i+s.length()/2]-'A'-'A')%26+'A';
}
cout<<s.substr(0,s.length()/2);
return 0;
}
B - Game of Throwns
这道题的难点之一就是输入数据,当时比赛时就没弄出来
这道题有简单方法,就是现将数存起来,等在最后在进行处理。
注意了,这题是我找来教大家负数取模的,具体做法看代码
总结:
当要求a模b,需分情况讨论:
当a>=0 : a%b
当-b<=a<0 : (a+b)%b
当a<-b : (a%b+b)%b
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char s[100];
int p[1000];
int n,k,c;
int sum;
int main(){
cin>>n>>k;
for(int i=1;i<=k;i++){
scanf("%s",s);
int num=0;
if(s[0]>='0'&&s[0]<='9'){
for(int j=0;j<strlen(s);j++){
num*=10;
num+=s[j]-'0';
}
// cout<<num<<endl;
p[++c]=num;
}
if(s[0]=='-'){
for(int j=1;j<strlen(s);j++){
num*=10;
num+=s[j]-'0';
}
// cout<<-num<<endl;
p[++c]=-num;
}
if(s[0]=='u'){
scanf("%s",s);
for(int j=0;j<strlen(s);j++){
num*=10;
num+=s[j]-'0';
}
// cout<<num<<endl;
// cout<<num<<endl;
c-=num;
// cout<<c<<endl;
}
}
for(int i=1;i<=c;i++)
sum+=p[i];
if(sum>n)
sum=sum%n;
if(sum<0&&sum>-n)
sum=(sum+n)%n;
if(sum<-n)
sum=(n+sum%n)%n;
cout<<sum<<endl;
return 0;
}
C - Sheba’s Amoebas
这道题用dfs,当时也做出来了,做法也一样,但做的稀里糊涂的,这次再捋一遍
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=110;
int n,m;
int num,sum;
char s[maxn][maxn];
int a[maxn][maxn];
void dfs(int x,int y){
if(x<=0||x>n||y<=0||y>m||a[x][y]||s[x][y]!='#')
return;
a[x][y]=1;
num++;
for(int i=-1;i<=1;i++){
for(int j=-1;j<=1;j++){
dfs(x+i,y+j);
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>s[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
num=0;
dfs(i,j);
if(num>0)sum++;
}
cout<<sum<<endl;
return 0;
}
来源:CSDN
作者:Deam-chasing ant
链接:https://blog.csdn.net/qq_43721152/article/details/104067899