本文: 原创链接
***2021年天梯总决赛***``
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<stdio.h>
int main(){
printf("To iterate is human, to recurse divine.\n");
return 0;
}
#include<bits/stdc++.h>
using namespace std;int main(){
cout<<"To iterate is human, to recurse divine.\n"; //或
cout<<"To iterate is human, to recurse divine.";
return 0;
}
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
参考答案:
C
#include<stdio.h>int main(){
int n,m,k; scanf("%d%d%d",&n,&m,&k);
printf("%d\n",n-k*m);
return 0;
}
C++
#include<bits/stdc++.h>
using namespace std;
int main(){
long long x,y,z;
cin>>x>>y>>z;
cout<<x-y*z;
return 0;
}
L1-3 强迫症 (10 分)
1小强在统计一个小区里居民的出生年月,但是发现大家填写的生日格式不统一,例如有的人写 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
参考答案:
C++
#include<bits/stdc++.h>//10分
using namespace std;
int main(){
int a;
cin>>a;// 右对齐 右对齐
if(a>9999)
printf("%04d-%02d",a/100,a%100);//全输入,格式控制输出
else{
if(a/100<22) cout<<20;
else cout<<19;//补齐前两位
printf("%02d-%02d",a/100,a%100);//控制格式输出
}
return 0;
}
C
#include<stdio.h>//7分
#include<string.h>
int main(){
char a[8]={'0'};
scanf("%s",a);
int b,c,len;
len=strlen(a);
if(len==4||len==5){
b=(a[0]-'0')*10+(a[1]-'0');
c=(a[2]-'0')*10+(a[3]-'0');
if(b<22) printf("20%d-%02d",b,c);
else{
printf("19%d-%02d",b,c);
}
}else{
printf("%c%c%c%c-
%c%c",a[0],a[1],a[2],a[3],a[4],a[5]);
}
return 0;
}
C
#include<stdio.hC//10分
int main(){
int a;
scanf("%d",&a);
if(a>9999)
printf("%04d-%02d",a/100,a%100);//全输入,格式控制输出
else{
if(a/100<22)
printf("20");
else printf("19");//补齐前两位
printf("%02d-
%02d",a/100,a%100);//控制格式输出 }
return 0;
}
L1-4 降价提醒机器人 (10 分)
1小 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 9998.097.0100.298.9
输出样例:On Sale! 98.0On Sale! 97.0On Sale! 98.9
参考答案:
C
#include<stdio.h>//10分
int main(){
int a,i,b;
float w;
scanf("%d%d",&a,&b);
for(i=0;i<a;i++)
{
scanf("%f",&w);
if(w<b*1.0)
printf("On Sale! %.1f\n",w);
}
return 0;
}
C++
#include<bits/stdc++.h>//10分
using namespace std;
int main(){
int a,b;
float w;// 或用double
cin>>a>>b;
while(a--){
cin>>w;
if(b*1.0>w)
printf("On Sale! %.1f\n",w);
}
return 0;
}
#include<stdio.h>
int main()
{
int i, j=2, x;
int a1, a2, n;
scanf("%d%d%d", &a1, &a2, &n);
int a[n];
a[0] = a1, a[1] = a2;
for(i=1;i<n;i++)
{
x = a[i] * a[i-1];
if(x/10 != 0)
a[j]=x/10, a[j+1]=x%10, j+=2;
else
a[j] = x, j++;
if(j>=n)
break;
}
for(i=0;i<n;i++)
(i==0) ? printf("%d", a[i]) : printf("\x20%d", a[i]);
return 0;
}