今天只做了三题,虽说比昨天的难亿点点,但这效率还是不行呀,
都还只是入门和普及-(在下小蒟蒻~~难哭在WC)
今天没有啥片头曲,咱们直接上题解
Q1:语句解析
题目描述
一串长度不超过 255 的 PASCAL 语言代码,只有 a,b,c 3 个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,
题目描述
一串长度不超过 255 的 PASCAL 语言代码,只有 a,b,c 3 个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,每条赋值语句的格式是 [变量]:=[变量或一位整数];
。未赋值的变量值为 0输出 a、b、c 的值。
输入格式
一串(<255)PASCAL语言,只有a,b,c 3个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,未赋值的变量值为0。
输出格式
输出a,b,c 最终的值。
一看到这题的输入格式(每条赋值语句的格式是 [变量]:=[变量或一位整数];
)大家脑子中就应该飘来五个大字:那都不是事儿
咳咳,说正经的,五个大字:格式化输入。这样麻烦的输入形式,第一个就要找格式化输入,
也就是熟悉的scanf啦,简单总结一下格式化输入的小模式:
scanf(%......变量类别int,double简写,&....变量名)
顺便再写写int,double以及之类的简称:
整数型 int %d
双精度浮点型 double %lf
字符型 char %c
字符串型 string %s
现在输入的问题解决了,后面就简单啦。
其实这道题中的赋值语句只有两种,右端(赋值端)为数字或字母,
如果是数字的话,就直接存到数组里,
如果是字符的话,就转换为对应字母的数字再存
那思路差不多说清啦,那就————
上代码!
#include<iostream>
using namespace std;
int a[3];
int main(){
char u,v;
while(scanf("%c:=%c;",&u,&v)==2)
{
if(v>='0'&&v<='9')
a[u-'a']=v-'0';
else
a[u-'a']=a[v-'a'];
}
for(int i=0;i<3;i++)
{
cout<<a[i]<<" ";
}
}
Q3:文字处理软件
题目描述
你需要开发一款文字处理软件。最开始时输入一个字符串(不超过 100 个字符)作为初始文档。可以认为文档开头是第 0 个字符。需要支持以下操作:
-
1 str
:后接插入,在文档后面插入字符串 str,并输出文档的字符串。 -
2 a b
:截取文档部分,只保留文档中从第 a 个字符起 b 个字符,并输出文档的字符串。 -
3 a str
:插入片段,在文档中第 a 个字符前面插入字符串 str,并输出文档的字符串。 -
4 str
:查找子串,查找字符串 str 在文档中最先的位置并输出;如果找不到输出 -1。
为了简化问题,规定初始的文档和每次操作中的 str 都不含有空格或换行。最多会有 q(q≤100) 次操作。
这个样例可以对比来看:
输入 #1
4 ILove 1 Luogu 2 5 5 3 3 guGugu 4 gu
输出 #1
ILoveLuogu Luogu LuoguGugugu 3
其实如果看了昨天内容的小伙伴,就会发现今天的题很简单:
1.~~~(变量).size()
用来统计这个字符串变量中字符的个数
2.~~~(变量).find()
用来寻找一个字符串中的一个子串开头字母的位置(默认从0开始寻找)
3.~~~(变量).substr()
用来截取一个字符串中的一个子串
第一个参数是开始寻找的位置,第二个参数是子串长度
例如:输入的字符串为abcde,输入到s变量里(cin>>s),
所以如果进行s.substr(2,3)操作,最后就会输出bcd
我自己写得,就在昨天的文章里,这题的操作就对应着这三个
不过第一个是拼接,学过的大家可能知道,拼接字符串只要将两者相加即可
那么问题搞定了
上代码!
#include<iostream>
#include<cstring>
using namespace std;
int main(){
int n;
cin>>n;
string s;
cin>>s;
while(n--)
{
int m;
cin>>m;
if(m==1)
{
string t;
cin>>t;
s=s+t;
cout<<s<<endl;
}
else if(m==2)
{
int o,p;
cin>>o>>p;
s=s.substr(o,p);
cout<<s<<endl;
}
else if(m==3)
{
int q;
cin>>q;
string b;
cin>>b;
s=s.substr(0,q)+b+s.substr(q);
cout<<s<<endl;
}
else if(m==4)
{
string f;
cin>>f;
int a=s.find(f);
cout<<a<<endl;
}
}
}
#Q3:笨小猴
(PS:做完我感觉我比这笨小猴还笨)
今天有点晚,代码留在这里,明天的博客里讲题解吧
#include<iostream>
using namespace std;
int cnt[30];
int main(){
string s;
cin>>s;
int maxn=0,minn=s.size();
for(int i=0;i<s.size();i++)
{
cnt[s[i]-'a']++;
}
for(int i=0;i<=25;i++)
{
maxn=max(maxn,cnt[i]);
if(cnt[i]!=0)
minn=min(minn,cnt[i]);
}
if(maxn-minn<=1)
{
cout<<"No Answer"<<endl<<0;
return 0;
}
for(int i=2;i<=maxn-minn-1;i++)
{
if((maxn-minn)%i==0)
{
cout<<"No Answer"<<endl<<0;
return 0;
}
}
cout<<"Lucky Word"<<endl<<maxn-minn;
}
可怜打工人~~~~
睡了家人们~~~晚安