P1914
这道题不能先加,应该先判断
ch[i]+m如果>127就会随机给数值
注意 一个字符的ASCLL码不能大于127;
#include<bits/stdc++.h>
using namespace std;
char ch[55];
int main(){
int n;
cin>>n;
cin>>ch;
int len=strlen(ch);
int m=n%26;
for(int i=0;i<len;i++){
if((ch[i]+m) >'z'){
ch[i]=ch[i]-26+m;
}
else{
ch[i]+=m;
}
}
cout<<ch<<endl;
return 0;
}
P1321
#include<bits/stdc++.h>
using namespace std;
int main()
{
int len,boy=0,girl=0;
string ch;
cin>>ch; //输入字符串st
len=ch.size(); //测长,这个size()函数包含在string和cstring文件头里,但这里我就用c++万能文件头了
for(int i=0; i<len-2; i++){ //枚举开始点,注意len-2,不然会越界,因为下面要i+2
if(ch[i]=='b'||ch[i+1]=='o'||ch[i+2]=='y') boy++;
}//在此范围内查找boy的出现次数,如果在此范围内有b或o或y出现的话,就将boy++
for(int i=0; i<len-3; i++){ //枚举开始点,注意len-3,不然会越界,因为下面要i+3
if(ch[i]=='g'||ch[i+1]=='i'||ch[i+2]=='r'||ch[i+3]=='l') girl++;
}//在此范围内查找boy的出现次数,如果在此范围内有g或i或r或l出现的话,就将girl++
cout<<boy<<endl<<girl; //输出boy和girl的出现次数
return 0;
}
只要出现相应单词的相应字母即可
本题只需判断字母,注意判断字母时循环的范围以及if中的关系
P2010
#include<bits/stdc++.h>
using namespace std;
int s[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};//每月的天数
int main(){
int n,m,c=0,sum=0,ans=0;
scanf("%d%d",&n,&m);
for (int i=1;i<=12;i++){//枚举月和日
for (int j=1;j<=s[i];j++){
c=(j%10)*1000+(j/10)*100+(i%10)*10+(i/10);//算出前四位。
sum=c*10000+i*100+j;//算出整个日期
if (sum<n||sum>m){continue;
}
ans++;//统计
}
}
printf("%d",ans);
return 0;
}
本题可以不用考虑闰年92200229 中9220是闰年
依次枚举每个符合条件的数然后判断是不是在所给区间范围内
如果是时间不允许可以判断是不是回文数的部分分
原题一定要掌握