L2-2 病毒溯源
L2-4 哲哲打游戏
L3-2 还原文件
L1-1 人与神 (5 分)
跨界大神 L. Peter Deutsch 有一句名言:“To iterate is human, to recurse divine.”(迭代的是人,递归的是神)。本题就请你直接在屏幕上输出这句话。
输入格式:
本题没有输入。
输出格式:
在一行中输出 To iterate is human, to recurse divine.。
输入样例:
无
输出样例:
To iterate is human, to recurse divine.
#include<bits/stdc++.h>
using namespace std;
int main()
{printf("To iterate is human, to recurse divine.");}
L1-2 两小时学完C语言 (5 分)
知乎上有个宝宝问:“两个小时内如何学完 C 语言?”当然,问的是“学完”并不是“学会”。
假设一本 C 语言教科书有 N 个字,这个宝宝每分钟能看 K 个字,看了 M 分钟。还剩多少字没有看?
输入格式:
输入在一行中给出 3 个正整数,分别是 N(不超过 400 000),教科书的总字数;K(不超过 3 000),是宝宝每分钟能看的字数;M(不超过 120),是宝宝看书的分钟数。
题目保证宝宝看完的字数不超过 N。
输出格式:
在一行中输出宝宝还没有看的字数。
输入样例:
100000 1000 72
输出样例:
28000
#include<bits/stdc++.h>
using namespace std;
int main()
{int a,b,c;cin>>a>>b>>c;cout<<a-b*c;}
L1-3 强迫症 (10 分)
小强在统计一个小区里居民的出生年月,但是发现大家填写的生日格式不统一,例如有的人写 199808,有的人只写 9808。有强迫症的小强请你写个程序,把所有人的出生年月都整理成 年年年年-月月 格式。对于那些只写了年份后两位的信息,我们默认小于 22 都是 20 开头的,其他都是 19 开头的。
输入格式:
输入在一行中给出一个出生年月,为一个 6 位或者 4 位数,题目保证是 1000 年 1 月到 2021 年 12 月之间的合法年月。
输出格式:
在一行中按标准格式 年年年年-月月 将输入的信息整理输出。
输入样例 1:
9808
输出样例 1:
1998-08
输入样例 2:
0510
输出样例 2:
2005-10
输入样例 3:
196711
输出样例 3:
1967-11
#include<bits/stdc++.h>
using namespace std;
int main()
{int a,b,c;cin>>a;b=a/100;if(a<10000){if(b<22)printf("20%02d-%02d\n",b,a%100);elseprintf("19%02d-%02d",a/100,a%100);}elseprintf("%d-%02d",a/100,a%100);}
#include<bits/stdc++.h>
using namespace std;
int main()
{int a,b,c;cin>>a>>b;while(a--){double s;cin>>s;if(s<b)printf("On Sale! %.1lf\n",s);}}
L1-5 大笨钟的心情 (15 分)
有网友问:未来还会有更多大笨钟题吗?笨钟回复说:看心情……
本题就请你替大笨钟写一个程序,根据心情自动输出回答。
输入格式:
输入在一行中给出 24 个 [0, 100] 区间内的整数,依次代表大笨钟在一天 24 小时中,每个小时的心情指数。
随后若干行,每行给出一个 [0, 23] 之间的整数,代表网友询问笨钟这个问题的时间点。当出现非法的时间点时,表示输入结束,这个非法输入不要处理。题目保证至少有 1 次询问。
输出格式:
对每一次提问,如果当时笨钟的心情指数大于 50,就在一行中输出 心情指数 Yes,否则输出 心情指数 No。
输入样例:
80 75 60 50 20 20 20 20 55 62 66 51 42 33 47 58 67 52 41 20 35 49 50 63
17
7
3
15
-1
输出样例:
52 Yes
20 No
50 No
58 Yes
#include<bits/stdc++.h>
using namespace std;
int main()
{int i,j,k;int a[100]; for(i=0;i<24;i++)scanf("%d",&a[i]);while(scanf("%d",&k)!=EOF){if(k<0||k>23)break;if(a[k]>50)printf("%d Yes",a[k]);elseprintf("%d No",a[k]);printf("\n");}}
L1-6 吉老师的回归 (15 分)
曾经在天梯赛大杀四方的吉老师决定回归天梯赛赛场啦!
为了简化题目,我们不妨假设天梯赛的每道题目可以用一个不超过 500 的、只包括可打印符号的字符串描述出来,如:Problem A: Print “Hello world!”。
众所周知,吉老师的竞赛水平非常高超,你可以认为他每道题目都会做(事实上也是……)。因此,吉老师会按照顺序看题并做题。但吉老师水平太高了,所以签到题他就懒得做了(浪费时间),具体来说,假如题目的字符串里有 qiandao 或者 easy(区分大小写)的话,吉老师看完题目就会跳过这道题目不做。
现在给定这次天梯赛总共有几道题目以及吉老师已经做完了几道题目,请你告诉大家吉老师现在正在做哪个题,或者吉老师已经把所有他打算做的题目做完了。
提醒:天梯赛有分数升级的规则,如果不做签到题可能导致团队总分不足以升级,一般的选手请千万不要学习吉老师的酷炫行为!
输入格式:
输入第一行是两个正整数 N,M (1≤M≤N≤30),表示本次天梯赛有 N 道题目,吉老师现在做完了 M 道。
接下来 N 行,每行是一个符合题目描述的字符串,表示天梯赛的题目内容。吉老师会按照给出的顺序看题——第一行就是吉老师看的第一道题,第二行就是第二道,以此类推。
输出格式:
在一行中输出吉老师当前正在做的题目对应的题面(即做完了 M 道题目后,吉老师正在做哪个题)。如果吉老师已经把所有他打算做的题目做完了,输出一行 Wo AK le。
输入样例 1:
5 1
L1-1 is a qiandao problem.
L1-2 is so…easy.
L1-3 is Easy.
L1-4 is qianDao.
Wow, such L1-5, so easy.
输出样例 1:
L1-4 is qianDao.
输入样例 2:
5 4
L1-1 is a-qiandao problem.
L1-2 is so easy.
L1-3 is Easy.
L1-4 is qianDao.
Wow, such L1-5, so!!easy.
输出样例 2:
Wo AK le
#include<stdio.h>
#include<string.h>
char s1[100]="qiandao",s2[100]="easy",s[100][1010];
int a[1010], n,m;
int main()
{int i,j,k,t=0;scanf("%d%d ",&n,&m);for(i=1;i<=n;i++){gets(s[i]);if(strstr(s[i],s1)!=NULL||strstr(s[i],s2)!=NULL)a[i]=1,t+=1;}t=n-t,k=0;if(m>=t)printf("Wo AK le\n");elsefor(i=1;i<=n;i++){if(a[i]==0){k++;}if(a[i]!=1&&k>m){printf("%s\n",s[i]);break;}}
}
L1-7 天梯赛的善良 (20 分)
天梯赛是个善良的比赛。善良的命题组希望将题目难度控制在一个范围内,使得每个参赛的学生都有能做出来的题目,并且最厉害的学生也要非常努力才有可能得到高分。
于是命题组首先将编程能力划分成了 10
6
个等级(太疯狂了,这是假的),然后调查了每个参赛学生的编程能力。现在请你写个程序找出所有参赛学生的最小和最大能力值,给命题组作为出题的参考。
输入格式:
输入在第一行中给出一个正整数 N(≤2×10
4
),即参赛学生的总数。随后一行给出 N 个不超过 10
6
的正整数,是参赛学生的能力值。
输出格式:
第一行输出所有参赛学生的最小能力值,以及具有这个能力值的学生人数。第二行输出所有参赛学生的最大能力值,以及具有这个能力值的学生人数。同行数字间以 1 个空格分隔,行首尾不得有多余空格。
输入样例:
10
86 75 233 888 666 75 886 888 75 666
输出样例:
75 3
888 2
#include<bits/stdc++.h>
using namespace std;
int n,a[1010100];
int main()
{int i,j,k;cin>>n;for(i=1;i<=n;i++)cin>>k,a[k]++;for(i=1;;i++){if(a[i]!=0){cout<<i<<" "<<a[i]<<endl;break;}}for(i=1000001;;i--){if(a[i]!=0){cout<<i<<" "<<a[i]<<endl;break;}}
}
#include<bits/stdc++.h>
using namespace std;
int a[10100];
int main()
{int i,j,k,x,y,n,m;cin>>a[1]>>a[2]>>k;x=1,y=2;for(i=3;i<=k;){m=a[x]*a[y];if(m>9){a[i]=m/10,a[i+1]=m%10;i+=2;}else{a[i]=m;i++;}x++,y++;}for(i=1;i<k;i++)cout<<a[i]<<" ";cout<<a[k]<<endl;
}
L2-1 包装机 (25 分)
一种自动包装机的结构如图 1 所示。首先机器中有 N 条轨道,放置了一些物品。轨道下面有一个筐。当某条轨道的按钮被按下时,活塞向左推动,将轨道尽头的一件物品推落筐中。当 0 号按钮被按下时,机械手将抓取筐顶部的一件物品,放到流水线上。图 2 显示了顺序按下按钮 3、2、3、0、1、2、0 后包装机的状态。
图1 自动包装机的结构
图 2 顺序按下按钮 3、2、3、0、1、2、0 后包装机的状态
一种特殊情况是,因为筐的容量是有限的,当筐已经满了,但仍然有某条轨道的按钮被按下时,系统应强制启动 0 号键,先从筐里抓出一件物品,再将对应轨道的物品推落。此外,如果轨道已经空了,再按对应的按钮不会发生任何事;同样的,如果筐是空的,按 0 号按钮也不会发生任何事。
现给定一系列按钮操作,请你依次列出流水线上的物品。
#include<bits/stdc++.h>
using namespace std;
int n,m,s;
char a[1010][1010];
int main()
{int i,j,k;char b[1010];cin>>n>>m>>s;for(i=1;i<=n;i++)cin>>a[i];int t=1;while(scanf("%d",&k),k!=-1){if(k==0){if(t>1)printf("%c",b[t-1]),t--;}else{for(i=0;i<m;i++)if(a[k][i]!='0')break;if(i!=m){if(t<=s){b[t++]=a[k][i];a[k][i]='0';}else{printf("%c",b[t-1]);b[t-1]=a[k][i],a[k][i]='0';}}}}}
L2-2 病毒溯源
L2-4 哲哲打游戏
L3-2 还原文件