学校4-11天梯赛选拔赛

news2024/12/23 9:22:41

目录

L1-5 6翻了

题目

输入格式:

输出格式:

输入样例:

输出样例:

思路

AC代码

L1-1 嫑废话上代码

题目

输入格式:

输出格式:

输入样例:

输出样例:

AC代码

L1-8 刮刮彩票

题目

输入格式:

输出格式:

输入样例:

输出样例:

思路

AC代码

L2-1 特立独行的幸福

题目

输入格式:

输出格式:

输入样例 1:

输出样例 1:

输入样例 2:

输出样例 2:

思路

AC代码

L2-2 老板的作息表

题目

输入格式:

输出格式:

输入样例:

输出样例:

思路

AC代码

L1-6 打PTA

题目

输入格式:

输出格式:

输入样例:

输出样例:

AC代码

L2-3 浪漫侧影

思路

输入格式:

输出格式:

输入样例:

输出样例:

思路

AC代码

L1-2 两小时学完C语言

题目

输入格式:

输出格式:

输入样例:

输出样例:

AC代码

L1-4 降价提醒机器人

题目

输入格式:

输出格式:

输入样例:

输出样例:

AC代码

L1-7 天梯赛的善良

题目

输入格式:

输出格式:

输入样例:

输出样例:

AC代码

L1-3 程序员买包子

题目

输入格式:

输出格式:

输入样例 1:

输出样例 1:

输入样例 2:

输出样例 2:

输入样例 3:

输出样例 3:

AC代码

PS


L1-5 6翻了

题目

分数 15

作者 陈越

单位 浙江大学

666.JPG

“666”是一种网络用语,大概是表示某人很厉害、我们很佩服的意思。最近又衍生出另一个数字“9”,意思是“6翻了”,实在太厉害的意思。如果你以为这就是厉害的最高境界,那就错啦 —— 目前的最高境界是数字“27”,因为这是 3 个 “9”!

本题就请你编写程序,将那些过时的、只会用一连串“6666……6”表达仰慕的句子,翻译成最新的高级表达。

输入格式:

输入在一行中给出一句话,即一个非空字符串,由不超过 1000 个英文字母、数字和空格组成,以回车结束。

输出格式:

从左到右扫描输入的句子:如果句子中有超过 3 个连续的 6,则将这串连续的 6 替换成 9;但如果有超过 9 个连续的 6,则将这串连续的 6 替换成 27。其他内容不受影响,原样输出。

输入样例:

it is so 666 really 6666 what else can I say 6666666666

输出样例:

it is so 666 really 9 what else can I say 27

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

思路

遍历一次,每次遇到六就判断有几个连续的6.

AC代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    getline(cin,s);
    int i=0;
    string ans;
    int len=s.length();
    while(i<len){
        if(s[i]!='6'){
            ans+=s[i];
            i++;
            continue;
        }
        int cnt=0;
        while(i<len&&s[i]=='6'){
            cnt++;
            i++;
        }
        if(cnt>3&&cnt<=9){
            ans+="9";
        }else if(cnt>9){
            ans+="27";
        }else if(cnt==1) ans+="6";
        else if(cnt==2) ans+="66";
        else if(cnt==3) ans+="666";
    }
    cout<<ans;
}

L1-1 嫑废话上代码

题目

分数 5

切换布局

作者 陈越

单位 浙江大学

Linux 之父 Linus Torvalds 的名言是:“Talk is cheap. Show me the code.”(嫑废话,上代码)。本题就请你直接在屏幕上输出这句话。

输入格式:

本题没有输入。

输出格式:

在一行中输出 Talk is cheap. Show me the code.

输入样例:

输出样例:

Talk is cheap. Show me the code.

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

AC代码

#include<iostream>
using namespace std;
int main()
{
    cout<<"Talk is cheap. Show me the code.";
}

L1-8 刮刮彩票

题目

分数 20

作者 DAI, Longao

单位 杭州百腾教育科技有限公司

“刮刮彩票”是一款网络游戏里面的一个小游戏。如图所示:

-362960_55cb6a89bf693.png

每次游戏玩家会拿到一张彩票,上面会有 9 个数字,分别为数字 1 到数字 9,数字各不重复,并以 3×3 的“九宫格”形式排布在彩票上。

在游戏开始时能看见一个位置上的数字,其他位置上的数字均不可见。你可以选择三个位置的数字刮开,这样玩家就能看见四个位置上的数字了。最后玩家再从 3 横、3 竖、2 斜共 8 个方向中挑选一个方向,方向上三个数字的和可根据下列表格进行兑奖,获得对应数额的金币。

数字合计获得金币数字合计获得金币
610,0001672
73617180
872018119
93601936
108020306
11252211,080
1210822144
1372231,800
1454243,600
15180

现在请你写出一个模拟程序,模拟玩家的游戏过程。

输入格式:

输入第一部分给出一张合法的彩票,即用 3 行 3 列给出 0 至 9 的数字。0 表示的是这个位置上的数字初始时就能看见了,而不是彩票上的数字为 0。

第二部给出玩家刮开的三个位置,分为三行,每行按格式 x y 给出玩家刮开的位置的行号和列号(题目中定义左上角的位置为第 1 行、第 1 列。)。数据保证玩家不会重复刮开已刮开的数字。

最后一部分给出玩家选择的方向,即一个整数: 1 至 3 表示选择横向的第一行、第二行、第三行,4 至 6 表示纵向的第一列、第二列、第三列,7、8分别表示左上到右下的主对角线和右上到左下的副对角线。

输出格式:

对于每一个刮开的操作,在一行中输出玩家能看到的数字。最后对于选择的方向,在一行中输出玩家获得的金币数量。

输入样例:

1 2 3
4 5 6
7 8 0
1 1
2 2
2 3
7

输出样例:

1
5
6
180

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

思路

简单模拟

AC代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a[]={0,0,0,0,0,0,
             10000,36,720,360,80,252,108,72,54,180,
             72,180,119,36,306,1080,144,1800,3600};
    int b[4][4];
    int x,y;
    int sum=45;
    for(int i=1;i<=3;i++){
        for(int j=1;j<=3;j++){
            cin>>b[i][j];
            sum-=b[i][j];
            if(b[i][j]==0) {
                x=i,y=j;
            }
        }
    }
    b[x][y]=sum;
    for(int i=0;i<3;i++){
        int xi,yi;
        cin>>xi>>yi;
        cout<<b[xi][yi]<<endl;;
    }
    int f;
    cin>>f;
    int total=0;
    if(f<=3){
        for(int i=1;i<=3;i++)
            total+=b[f][i];
    }else if(f<=6){
        for(int i=1;i<=3;i++)
            total+=b[i][f-3];
    }else if(f==7)
        total+=b[1][1]+b[2][2]+b[3][3];
    else
        total+=b[3][1]+b[2][2]+b[1][3];
    cout<<a[total];
}

L2-1 特立独行的幸福

题目

分数 25

作者 陈越

单位 浙江大学

对一个十进制数的各位数字做一次平方和,称作一次迭代。如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数。1 是一个幸福数。此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68,3 次迭代后得到 100,最后得到 1。则 19 就是幸福数。显然,在一个幸福数迭代到 1 的过程中经过的数字都是幸福数,它们的幸福是依附于初始数字的。例如 82、68、100 的幸福是依附于 19 的。而一个特立独行的幸福数,是在一个有限的区间内不依附于任何其它数字的;其独立性就是依附于它的的幸福数的个数。如果这个数还是个素数,则其独立性加倍。例如 19 在区间[1, 100] 内就是一个特立独行的幸福数,其独立性为 2×4=8。

另一方面,如果一个大于1的数字经过数次迭代后进入了死循环,那这个数就不幸福。例如 29 迭代得到 85、89、145、42、20、4、16、37、58、89、…… 可见 89 到 58 形成了死循环,所以 29 就不幸福。

本题就要求你编写程序,列出给定区间内的所有特立独行的幸福数和它的独立性。

输入格式:

输入在第一行给出闭区间的两个端点:1<A<B≤104。

输出格式:

按递增顺序列出给定闭区间 [A,B] 内的所有特立独行的幸福数和它的独立性。每对数字占一行,数字间以 1 个空格分隔。

如果区间内没有幸福数,则在一行中输出 SAD

输入样例 1:

10 40

输出样例 1:

19 8
23 6
28 3
31 4
32 3

注意:样例中,10、13 也都是幸福数,但它们分别依附于其他数字(如 23、31 等等),所以不输出。其它数字虽然其实也依附于其它幸福数,但因为那些数字不在给定区间 [10, 40] 内,所以它们在给定区间内是特立独行的幸福数。

输入样例 2:

110 120

输出样例 2:

SAD

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

思路

主要工作有两个,一是判断素数,二是判断能不能迭代成1,并且记录迭代次数。

判断是否是素数用6步步长的方法。

判断是不是特立独行幸福数和迭代次数时用类似于素数筛的思想。先建立一个visited数组,当visited[i]==0时,代表i目前还是特立独行的幸福数。然后依次从A遍历到B。每次遍历时不断迭代,迭代过程中有重复出现的数字就代表出现了死循环,就停止迭代。迭代过程中产生的数x不是特立独行,就标记visited[x]==1,下次遍历x时就直接跳过。

AC代码

#include<bits/stdc++.h>
using namespace std;
const int MAXSIZE=1e4+5;
int A,B;
int sum=0;
int visited[MAXSIZE];//==0-->还是
int diedai[MAXSIZE];//记录迭代次数
bool isprime(int n)
{
    if(n==2||n==3) return true;
    if(n%6!=5&&n%6!=1) return false;
    for(int i=5;i*i<=n;i+=6) if(n%i==0||n%(i+2)==0) return false;
    return true;
}
int change(int x)
{
    int ans=0;
    while(x){
        int t=x%10;
        ans+=t*t;
        x/=10;
    }
    return ans;
}
int isfortun(int num)//返回-1表是不是
{
    if(visited[num]==1) return -1;
    map<int,int> mp;//用于判断是否进入死循环
    mp[num]=1;
    int x=num;
    int cnt=0;//迭代次数
    while(x!=1){
        int later=change(x);
        cnt++;
        if(later==1) return cnt;
        visited[later]=1;
        //出现死循环
        if(mp[later]!=0){
            visited[later]=1;
            return -1;
        }
        mp[later]=1;
        x=later;
    }
}
int main()
{
    cin>>A>>B;
    for(int i=A;i<=B;i++){
        if(visited[i]==1) continue;
        int a=isfortun(i);
        if(a==-1) visited[i]=1;
        else{
            diedai[i]=a;
        }
    }
    int cnt=0;
    for(int i=A;i<=B;i++){
        if(visited[i]==0){
            bool flag=isprime(i);
            int x=diedai[i]*((flag==true)?2:1);
            if(cnt!=0) cout<<endl;
            cout<<i<<" "<<x;
            cnt++;
        }
    }
    if(cnt==0)
        cout<<"SAD";
}

L2-2 老板的作息表

题目

分数 25

作者 陈越

单位 浙江大学

zcy.png

新浪微博上有人发了某老板的作息时间表,表示其每天 4:30 就起床了。但立刻有眼尖的网友问:这时间表不完整啊,早上九点到下午一点干啥了?

本题就请你编写程序,检查任意一张时间表,找出其中没写出来的时间段。

输入格式:

输入第一行给出一个正整数 N,为作息表上列出的时间段的个数。随后 N 行,每行给出一个时间段,格式为:

hh:mm:ss - hh:mm:ss

其中 hhmmss 分别是两位数表示的小时、分钟、秒。第一个时间是开始时间,第二个是结束时间。题目保证所有时间都在一天之内(即从 00:00:00 到 23:59:59);每个区间间隔至少 1 秒;并且任意两个给出的时间区间最多只在一个端点有重合,没有区间重叠的情况。

输出格式:

按照时间顺序列出时间表中没有出现的区间,每个区间占一行,格式与输入相同。题目保证至少存在一个区间需要输出。

输入样例:

8
13:00:00 - 18:00:00
00:00:00 - 01:00:05
08:00:00 - 09:00:00
07:10:59 - 08:00:00
01:00:05 - 04:30:00
06:30:00 - 07:10:58
05:30:00 - 06:30:00
18:00:00 - 19:00:00

输出样例:

04:30:00 - 05:30:00
07:10:58 - 07:10:59
09:00:00 - 13:00:00
19:00:00 - 23:59:59

代码长度限制

16 KB

Java (javac)

时间限制

900 ms

内存限制

128 MB

Python (python3)

时间限制

300 ms

内存限制

64 MB

其他编译器

时间限制

200 ms

内存限制

64 MB

栈限制

8192 KB

思路

将输入的所有作息按照开始时间进行排序,每个作息之间的间隔就是没有出现的区间。注意0点和最早的作息之间的间隔和最后一个作息和23:59之间的间隔

AC代码

#include<bits/stdc++.h>
using namespace std;
int h=0,m=0,s=0;
int cnt=0;
struct time{
    int h1,h2;
    int m1,m2;
    int s1,s2;
};
bool cmp(struct time a,struct time b)
{
    if(a.h1!=b.h1) return a.h1<b.h1;
    if(a.m1!=b.m1) return a.m1<b.m1;
    if(a.s1!=b.s1) return a.s1<b.s1;
}
bool compare(struct time a)//true-->cur在前
{
	if(h==a.h1&&m==a.m1&&s==a.s1) return false;
    if(h!=a.h1) return h<a.h1;
    if(m!=a.m1) return m<a.m1;
    if(s!=a.s1) return s<a.s1;
}
int main()
{
	struct time T[100005];
    int n;
    cin>>n;
    getchar();
    for(int i=0;i<n;i++){
        string s;
        getline(cin,s);
        T[i].h1=10*(s[0]-'0')+(s[1]-'0');
        T[i].h2=10*(s[11]-'0')+(s[12]-'0');
        T[i].m1=10*(s[3]-'0')+(s[4]-'0');
        T[i].m2=10*(s[14]-'0')+(s[15]-'0');
        T[i].s1=10*(s[6]-'0')+(s[7]-'0');
        T[i].s2=10*(s[17]-'0')+(s[18]-'0');
    }
    sort(T,T+n,cmp);
    /*
    cout<<endl;
    for(int i=0;i<n;i++){
    	printf("%02d:%02d:%02d - %02d:%02d:%02d\n",T[i].h1,T[i].m1,T[i].s1,T[i].h2,T[i].m2,T[i].s2);
	}
    cout<<endl;
    */
    //
    int cnt=0;
    for(int i=0;i<n;i++){
        bool flag=compare(T[i]);
        if(flag){
            if(cnt!=0) cout<<endl;
            cnt++;
            printf("%02d:%02d:%02d - %02d:%02d:%02d",h,m,s,T[i].h1,T[i].m1,T[i].s1);
        }
            h=T[i].h2;
            m=T[i].m2;
            s=T[i].s2;
    }
    if(!(h==23&&m==59&&s==59)){
        if(cnt!=0) cout<<endl;
        printf("%02d:%02d:%02d - 23:59:59",h,m,s);
    }
}

L1-6 打PTA

题目

分数 15

作者 陈越

单位 浙江大学

打PTA.jpg

传说这是集美大学的学生对话。本题要求你做一个简单的自动问答机,对任何一个问句,只要其中包含 PTA 就回答 Yes!,其他一概回答 No.

输入格式:

输入第一行给出一个整型范围内的正整数 N,随后 N 行,每行给出一个长度不超过 80 的字符串,为用户输入的句子,由英文字母、数字、空格和标点符号组成,以回车结束。

输出格式:

对每一行句子,如果其结尾字符为问号 ? 则判断此句中有无 PTA?如果有则在一行中输出 Yes!,否则输出 No.。如果不是问号结尾,则敷衍地回答 enen

输入样例:

5
Hello!
Do you still play WZRY?
Chi Ji?
you play PTA ah?
how about pta site?

输出样例:

enen
No.
No.
Yes!
No.

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

C++ (g++)

AC代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    getchar();
    for(int i=0;i<n;i++){
        string s;
        getline(cin,s);
        int len=s.length();
        if(i!=0) cout<<endl;
        if(len>0&&s[len-1]!='?') cout<<"enen";
        else{
            int pos=s.find("PTA");
            if(pos==-1) cout<<"No.";
            else cout<<"Yes!";
        }
    }
}

L2-3 浪漫侧影

思路

分数 25

作者 陈越

单位 浙江大学

v.JPG

“侧影”就是从左侧或者右侧去观察物体所看到的内容。例如上图中男生的侧影是从他右侧看过去的样子,叫“右视图”;女生的侧影是从她左侧看过去的样子,叫“左视图”。

520 这个日子还在打比赛的你,也就抱着一棵二叉树左看看右看看了……

我们将二叉树的“侧影”定义为从一侧能看到的所有结点从上到下形成的序列。例如下图这棵二叉树,其右视图就是 { 1, 2, 3, 4, 5 },左视图就是 { 1, 6, 7, 8, 5 }。

fig.JPG

于是让我们首先通过一棵二叉树的中序遍历序列和后序遍历序列构建出一棵树,然后你要输出这棵树的左视图和右视图。

输入格式:

输入第一行给出一个正整数 N (≤20),为树中的结点个数。随后在两行中先后给出树的中序遍历和后序遍历序列。树中所有键值都不相同,其数值大小无关紧要,都不超过 int 的范围。

输出格式:

第一行输出右视图,第二行输出左视图,格式如样例所示。

输入样例:

8
6 8 7 4 5 1 3 2
8 5 4 7 6 3 2 1

输出样例:

R: 1 2 3 4 5
L: 1 6 7 8 5

感谢用户DSA修正数据!

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

思路

根据二叉树的中序遍历和后序遍历,构造出二叉树,然后再对二叉树层序遍历。

左视图就是只输出每一层的第一个。

右视图就是只输出每一层就最后一个。

建树的话用递归的方法建树,方法如下。

函数create(int l1,int r1,int l2,int r2)。l1,r1为中序遍历的左右端点;l2,r2为后序遍历的左右端点。数组arr1表示中序遍历,数组arr2表示后序遍历。

1、如果(l1>r1)或(l2>r2),结束函数。

2、建根节点,值为arr2[r2]。

3、在中序遍历中找到值为arr2[r2]的位置,记为pos。那么左右子树的节点数量分别为int leftCount=pos-l1,int rightCount=r1-pos;。那么[l1,pos-1]为左子树的中序遍历,[pos+1,r1]为右子树的中序遍历;[l2,l2+leftCount-1]为左子树的后序遍历,[l2+leftCount,r2-1]为右子树的后序遍历。

4、递归调用create建造左右子树,回到步骤。

AC代码

#include<bits/stdc++.h>
using namespace std;
struct node{
    int value;
    node* left;
    node* right;
};
int n;
int arr1[30];//中序遍历
int arr2[30];//后序遍历
node* create(int l1,int r1,int l2,int r2)
{//参数分别为中序的首尾和后续的首尾
    if(l1>r1||l2>r2) return NULL;
    node* root=new node;
    root->value=arr2[r2];
    root->left=root->right=NULL;
    //找中序根的位置
    int pos=-1;
    for(pos=l1;pos<=r1;pos++){
        if(arr1[pos]==root->value)
            break;
    }
    //递归建树
    int leftCount=pos-l1;
    int rightCount=r1-pos;
    node* lchild=create(l1,pos-1,l2,l2+leftCount-1);
    node* rchild=create(pos+1,r1,l2+leftCount,r2-1);
    root->left=lchild;
    root->right=rchild;
    return root;
}
vector<int> gleft;
vector<int> gright;
void bfs(node* root)
{
    if(!root) return;
    queue<node*> q;
    q.push(root);
    while(!q.empty()){
        int len=q.size();
        for(int i=0;i<len;i++){
            node* cur=q.front();
            q.pop();
            if(i==0) gleft.push_back(cur->value);
            if(i==len-1) gright.push_back(cur->value);
            if(cur->left) q.push(cur->left);
            if(cur->right) q.push(cur->right);
        }
    }
}
int main()
{
    cin>>n;
    for(int i=0;i<n;i++) cin>>arr1[i];
    for(int i=0;i<n;i++) cin>>arr2[i];
    node* root=create(0,n-1,0,n-1);
    bfs(root);
    cout<<"R:";
    for(auto x:gright)
        cout<<" "<<x;
    cout<<endl<<"L:";
    for(auto x:gleft)
        cout<<" "<<x;
}

L1-2 两小时学完C语言

题目

分数 5

作者 陈越

单位 浙江大学

Q.JPG

知乎上有个宝宝问:“两个小时内如何学完 C 语言?”当然,问的是“学完”并不是“学会”。

假设一本 C 语言教科书有 N 个字,这个宝宝每分钟能看 K 个字,看了 M 分钟。还剩多少字没有看?

输入格式:

输入在一行中给出 3 个正整数,分别是 N(不超过 400 000),教科书的总字数;K(不超过 3 000),是宝宝每分钟能看的字数;M(不超过 120),是宝宝看书的分钟数。

题目保证宝宝看完的字数不超过 N。

输出格式:

在一行中输出宝宝还没有看的字数。

输入样例:

100000 1000 72

输出样例:

28000

AC代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,m,k;
    cin>>n>>m>>k;
    cout<<n-m*k;
}

L1-4 降价提醒机器人

题目

分数 10

作者 DAI, Longao

单位 杭州百腾教育科技有限公司

小 T 想买一个玩具很久了,但价格有些高,他打算等便宜些再买。但天天盯着购物网站很麻烦,请你帮小 T 写一个降价提醒机器人,当玩具的当前价格比他设定的价格便宜时发出提醒。

输入格式:

输入第一行是两个正整数 N 和 M (1≤N≤100,0≤M≤1000),表示有 N 条价格记录,小 T 设置的价格为 M。

接下来 N 行,每行有一个实数 Pi​(−1000.0<Pi​<1000.0),表示一条价格记录。

输出格式:

对每一条比设定价格 M 便宜的价格记录 P,在一行中输出 On Sale! P,其中 P 输出到小数点后 1 位。

输入样例:

4 99
98.0
97.0
100.2
98.9

输出样例:

On Sale! 98.0
On Sale! 97.0
On Sale! 98.9

AC代码

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    int n,m;
    cin>>n>>m;
    int cnt=0;
    for(int i=0;i<n;i++)
    {
        double p;
        cin>>p;
        if(p<m){
            if(cnt!=0) cout<<endl;
            printf("On Sale! %.1lf",p);
            cnt++;
        }
    }
}

L1-7 天梯赛的善良

题目

分数 20

作者 陈越

单位 浙江大学

天梯赛是个善良的比赛。善良的命题组希望将题目难度控制在一个范围内,使得每个参赛的学生都有能做出来的题目,并且最厉害的学生也要非常努力才有可能得到高分。

于是命题组首先将编程能力划分成了 106 个等级(太疯狂了,这是假的),然后调查了每个参赛学生的编程能力。现在请你写个程序找出所有参赛学生的最小和最大能力值,给命题组作为出题的参考。

输入格式:

输入在第一行中给出一个正整数 N(≤2×104),即参赛学生的总数。随后一行给出 N 个不超过 106 的正整数,是参赛学生的能力值。

输出格式:

第一行输出所有参赛学生的最小能力值,以及具有这个能力值的学生人数。第二行输出所有参赛学生的最大能力值,以及具有这个能力值的学生人数。同行数字间以 1 个空格分隔,行首尾不得有多余空格。

输入样例:

10
86 75 233 888 666 75 886 888 75 666

输出样例:

75 3
888 2

代码长度限制

16 KB

时间限制

200 ms

内存限制

64 MB

栈限制

8192 KB

AC代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int minn=1e8;
    int cnt1=0;
    int maxn=-1;
    int cnt2=0;
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        int x;
        cin>>x;
        if(x<minn){
            minn=x;
            cnt1=1;
        }
        else if(x==minn) cnt1++;
        if(x>maxn){
            maxn=x;
            cnt2=1;
        }
        else if(x==maxn) cnt2++;
    }
    cout<<minn<<" "<<cnt1<<endl;
    cout<<maxn<<" "<<cnt2;
}

L1-3 程序员买包子

题目

分数 10

作者 陈越

单位 浙江大学

bao.jpg

这是一条检测真正程序员的段子:假如你被家人要求下班顺路买十只包子,如果看到卖西瓜的,买一只。那么你会在什么情况下只买一只包子回家?
本题要求你考虑这个段子的通用版:假如你被要求下班顺路买 N 只包子,如果看到卖 X 的,买 M 只。那么如果你最后买了 K 只包子回家,说明你看到卖 X 的没有呢?

输入格式:

输入在一行中顺序给出题面中的 N、X、M、K,以空格分隔。其中 N、M 和 K 为不超过 1000 的正整数,X 是一个长度不超过 10 的、仅由小写英文字母组成的字符串。题目保证 N=M。

输出格式:

在一行中输出结论,格式为:

  • 如果 K=N,输出 mei you mai X de
  • 如果 K=M,输出 kan dao le mai X de
  • 否则输出 wang le zhao mai X de.
    其中 X 是输入中给定的字符串 X。

输入样例 1:

10 xigua 1 10

输出样例 1:

mei you mai xigua de

输入样例 2:

10 huanggua 1 1

输出样例 2:

kan dao le mai huanggua de

输入样例 3:

10 shagua 1 250

输出样例 3:

wang le zhao mai shagua de

AC代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,m,k;
    string x;
    cin>>n>>x>>m>>k;
    if(k==n) cout<<"mei you mai "<<x<<" de";
    else if(k==m) cout<<"kan dao le mai "<<x<<" de";
    else cout<<"wang le zhao mai "<<x<<" de";
}

PS

还有两题没写,就不发了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1595246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

温故知新之-TCP Keepalive机制及长短连接

[学习记录] 前言 TCP连接一旦建立&#xff0c;只要连接双方不主动 close &#xff0c;连接就会一直保持。但建立连接的双方并不是一直都存在数据交互&#xff0c;所以在实际使用中会存在两种情况&#xff1a;一种是每次使用完&#xff0c;主动close&#xff0c;即短连接&…

建模设计软件 Archicad 27 for mac激活版

在建筑设计领域&#xff0c;每一次技术的革新都意味着设计效率和质量的飞跃。Archicad 27 for Mac&#xff0c;就是这样一款引领行业变革的设计软件。 Archicad 27凭借出色的性能优化和强大的功能更新&#xff0c;为Mac用户带来了前所未有的建筑设计体验。它支持BIM&#xff08…

5G网络开通与调测ipv4

要求如下&#xff1a; 1. 勘站规划 1. 【重】首先观察NR频点&#xff0c;完成设备选型 2645--选择N41 3455--选择N78 4725--选择N79 设备选型如下&#xff1a;观察AAU的通道数&#xff0c;最大发射功率&#xff1b;选择N41的选型频段也要选41 2. …

InnoDB中高度为3的B+树最多可以存多少数据?

参考&#xff1a; &#x1f525;我说MySQL每张表最好不超过2000万数据&#xff0c;面试官让我回去等通知&#xff1f; - 掘金 考虑到磁盘IO是非常高昂的操作&#xff0c;计算机操作系统做了预读的优化&#xff0c;当一次IO时&#xff0c;不光把当前磁盘地址的数据&#xff0c;…

sudo apt install ros-humble-gazebo-*显示网络不可达 Ubuntu20.04使用清华镜像本地安装/更新ros2

问题 sudo apt install ros-humble-gazebo-*显示网络不可达&#xff0c;这是因为sources.list中的镜像源有问题&#xff0c;换成清华源可以解决问题 解决 1 设置Ubuntu镜像源为清华镜像源 1.1 备份source.list文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list.ba…

GNU Radio创建Zadoff-Chu序列C++ OOT块

文章目录 前言一、ZC序列是什么&#xff1f;二、创建自定义的 C OOT 块1、创建 OOT 模块2、创建 OOT 块3、修改 C 文件4、编译及安装 OOT 块 三、测试1、grc 图2、运行结果①、时域图②、时域幅值模图③、IQ 曲线 四、其他五、资源自取 前言 本文实现在 GNU Radio 中创建 Zado…

连接两部VR头显的type-c DP分配器方案,可以给主机设备PD反向供电与两部VR同时供电。

随着type-c的发展&#xff0c;目前越来越多的设备都在使用type-c作为连接的接口&#xff0c; 不仅是笔记本与手机在使用现在的游戏主机如&#xff08;任天堂&#xff0c;steam&#xff0c;&#xff09;或者是VR的一体机或者是VR头显也都在使用type-c作为连接接口。 type-c接口…

CSS常用十大选择器(理论+代码实操)

HTML代码实例 注意&#xff1a;拷贝后本地运行注意head标签中的link标签的href属性是否正确 我的目录结构&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>Title</title><lin…

使用新一代一站式 AI Bot 开发平台扣子coze,搭建我的第一个AI Bot(前端魔法师) ,

目录 1.概述​ 2.功能与优势 3.使用扣子 4.人设与回复逻辑 5.添加插件 6.预览与调试 7.发布bot Store 8.环境大家体验&#xff08;给大家内置了比较屌的插件&#xff09; 9.推荐阅读&#xff1a; 1.概述​ 扣子是新一代一站式 AI Bot 开发平台。无论你是否有编程基础…

代码学习记录42---动态规划

随想录日记part42 t i m e &#xff1a; time&#xff1a; time&#xff1a; 2024.04.14 主要内容&#xff1a;今天开始要学习动态规划的相关知识了&#xff0c;今天的内容主要涉及&#xff1a;最长递增子序列 &#xff1b;最长连续递增序列 &#xff1b;最长重复子数组 ;最长公…

陇剑杯 ios 流量分析

陇剑杯 ios 流量分析 ios 一位ios的安全研究员在家中使用手机联网被黑&#xff0c;不仅被窃密还丢失比特币若干&#xff0c;根据流量分析完成ios1-8 ios 1 ios-1&#xff1a;黑客所控制的C&C服务器IP是_____________。 什么是C&C服务器? C&C&#xff08;Com…

UBuntu18.04通过ODBC连接MySQL远程数据库

今天在做一个Qt视频播放器的小项目然后想要在ubuntu18.04运行这个项目&#xff0c;需要在Qt中连接远程的MySQL数据库&#xff0c;所以用到了ODBC。我在连接时遇到了一些问题&#xff0c;加之网上的教程各说纷纭&#xff0c;所以我花了很多时间去解决&#xff0c;所以决定做做笔…

架构师系列-搜索引擎ElasticSearch(五)- 索引设计

索引创建后&#xff0c;要非常谨慎&#xff0c;创建不好后面会出现各种问题。 索引设计的重要性 索引创建后&#xff0c;索引分片只能通过_split和_shrink 接口对其进行成倍的增加和缩减。 ES的数据是通过_routing分配到各个分片上的&#xff0c;所以本质上不推荐区改变索引的…

链表-双指针-虚拟节点-力扣

链表--双指针--虚拟节点 力扣 142 环形链表求循环起点 重点力扣 21 合并两个有序链表力扣 86 分割链表力扣23 合并K个有序链表 -- 优先队列&#xff08;二叉堆 小顶堆&#xff09;重点力扣19 找倒数第N个元素 快慢指针 一次遍历 重点力扣876 快慢指针找中间节点力扣 160 相交链…

vue简单使用三(class样式绑定)

目录 对象的形式绑定&#xff1a; 数组的形式绑定&#xff1a; 内联样式Style 对象的形式绑定&#xff1a; 可以看到class中有两个值 数组的形式绑定&#xff1a; 可以看到也有两个值 内联样式Style style样式设置成功 完整代码&#xff1a; <!DOCTYPE html> <html…

快速列表quicklist

目录 为什么使用快速列表quicklist 对比双向链表 对比压缩列表ziplist quicklist结构 节点结构quicklistNode quicklist 管理ziplist信息的结构quicklistEntry 迭代器结构quicklistIter quicklist的API 1.创建快速列表 2.创建快速列表节点 3.头插quicklistPushHead …

qemu源码解析一

基于qemu9.0.0 简介 QEMU是一个开源的虚拟化软件&#xff0c;它能够模拟各种硬件设备&#xff0c;支持多种虚拟化技术&#xff0c;如TCG、Xen、KVM等 TCG 是 QEMU 中的一个组件&#xff0c;它可以将高级语言编写的代码&#xff08;例如 C 代码&#xff09;转换为可在虚拟机中…

关于部署ELK和EFLK的相关知识

文章目录 一、ELK日志分析系统1、ELK简介1.2 ElasticSearch1.3 Logstash1.4 Kibana&#xff08;展示数据可视化界面&#xff09;1.5 Filebeat 2、使用ELK的原因3、完整日志系统的基本特征4、ELK的工作原理 二、部署ELK日志分析系统1、服务器配置2、关闭防火墙3、ELK ElasticSea…

Niobe开发板OpenHarmony内核编程开发——定时器

本示例将演示如何在Niobe Wifi IoT开发板上使用cmsis 2.0 接口进行定时器开发 Timer API分析 osTimerNew() /// Create and Initialize a timer./// \param[in] func function pointer to callback function./// \param[in] type \ref osTimerOnce …

【菜狗学前端】原生Ajax笔记(包含原生ajax的get/post传参方式、返回数据等)

这回图片少&#xff0c;给手动替换了~祝看得愉快&#xff0c;学的顺畅&#xff01;哈哈 一 原生ajax经典四步 (一) 原生ajax经典四步 第一步&#xff1a;创建网络请求的AJAX对象&#xff08;使用XMLHttpRequest&#xff09; JavaScript let xhr new XMLHttpRequest() 第二…