0
点赞
收藏
分享

微信扫一扫

day-3 洛谷刷题日志

少_游 2022-01-27 阅读 53

今天只做了三题,虽说比昨天的难亿点点,但这效率还是不行呀,

都还只是入门和普及-(在下小蒟蒻~~难哭在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;
}

可怜打工人~~~~

睡了家人们~~~晚安

举报

相关推荐

洛谷刷题收获3

洛谷刷题收获

算法Day-3

day-3总结

0 条评论