2021新生训练赛
A,输出一串数字序列
Description
输入一行数字n
在下一行输出 n 个数字,这 n 个数字为 n 到 1 的 n 个数字
Input
输入一个整型n(1<=n<=100)
Output
输出占一行
代码:
#include <cstdio>
int main()
{
int n;
scanf("%d",&n);
for(int i=n;i>=1;i--){
printf("%d ",i);
}
return 0;
}
B,列序字数串一出输
Description
多组输入
“入输组多”
Input
每组数据占两行:
第一行为一个数字n(n ≤ 10000)
下一行为n个数字 (int)
Output
将这 n个数字“出输”,如果数字不足五位就在前面补零
每组“出输”占一行,行末没有多余空格
代码:
#include <stdio.h>
int ans[10005];
int main()
{
int n;
while(~scanf("%d",&n)){
for(int i=0;i<n;i++){
scanf("%d",&ans[i]);
}
for(int i=n-1;i>=0;i--){
if(i==n-1){
printf("%05d",ans[i]);
}
else{
printf(" %05d",ans[i]);
}
}
printf("\n");
}
return 0;
}
C,转签义到题
按要求输出样例中的内容
代码:
#include <stdio.h>
int main()
{
printf("\"9900\\100=99,but 99!=100\"\n\"The operation symbol above is wrong\"\n\"Success requires %99 diligence and %1 talent\"");
return 0;
}
D,王木辛r发明时光机
Description
王木辛r在之前的比赛中发现了常润茶发明了时光机。并且取得了非常好的成绩。时光机是个什么好东西呢。他可以穿越时空。(穿越到之前或之后的时间并且可以抄到nsz的代码)。
因为王木辛r对年龄问题很敏感。每当被问及年龄的时候,他总想要逃避。所以王木辛r连夜苦思冥想夜夜通宵废寝忘食学习跟常润茶加班,也发明了时光机。于是当他18岁以下的时候,别人问他多少岁,他会如实回答,当他年龄大于18时候,他会回答:18。
他坐着时光机穿越到不同的年份,他知道自己穿越后的年龄。那么当他穿越后别人问他年龄的时候他应该怎么回答呢?
Input
第一行一个整数n,(1<=n<=1000),表示穿越时光机的次数;
接下来n行每行一个整数x,(1<=x<=10000),表示穿越后的年龄。
Output
共n行,每行一个整数表示一次穿越后回答的年龄。
解析:
根据题意,此题只需要判断给你的数是否大于18,如果大于18,输出18,如果小于等于18,则原样输出。
代码:
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
while(n--){
int q;
scanf("%d",&q);
if(q<18){
printf("%d\n",q);
}
else{
printf("18\n");
}
}
return 0;
}
E,自动WA掘机
Description
小A的家门口有一条很长的路,这条路的一侧长满了参天大树,但就在不久前,小A的城市经历了一场台风,这场台风把位置不是素数的树都吹断了,现在要重新种树来把吹断的树替换掉,但是所有断了的树的树根都留在了地下,想要种树的话就必须把树根先挖出来,小A现在要请挖掘机师傅把l到r之间的树根都挖出来,每挖一个树根要给挖掘机师傅w元,请问小A一共需要支付多少钱?
Input
输入三个数:l,r,w(1<= l <=5000,1<= r <=5000),(1<=w<=998244353)
Output
输出小A一共支付的钱
注意:
注意数据范围,需要开long long或long long int
代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define ll long long//宏定义
int main()
{
ll l,r,w;//注意题目的数据范围,再去确定是用int还是long long
scanf("%lld%lld%lld",&l,&r,&w);
if(l>r)//题目没明确说明l,r的大小,并且在提示中也提示了l,r大小不明确
{
int t=l;
l=r;
r=t;
}
ll num=0;
if(l==1)//注意这个1,如果去找合数的话一定要特判这个1
num++;
for(int i=l;i<=r;i++)
{
for(int j=2;j<=sqrt(i);j++)
{
if(i%j==0)
{
num++;
break;
}
}
}
ll ans=num*w;
printf("%lld\n",ans);
return 0;
}
F,AC自动机
Description
小C同学刚刚接触到了ACM,在一次偶然的机会下,小C得到了一个密码箱(里面有自动AC题目的终极代码)和一篇文档,密码箱上有一个五位的密码,通过神秘人得知密码就是文档里面元音字母的个数,现在小C向你发出了求助,请求你来帮助他得到终极代码。
Input
第一行输入一个t(1<= t <=100);
接下来有t组数据,每组数据占两行:
第一行输入文档(字符串)的长度n(1<=n<=500)
第二行输入小C的文档(字符串)
Output
每次输出五个数据:每个元音字母的数量
每组输出占一行
题解:
用C语言处理字符串相关题目的时候,有的时候需要用getchar()吸收换行,否则会影响下一次字符的读取。
代码:
#include <stdio.h>
int main()
{
int t;
scanf("%d", &t);
while (t--)
{
int n;
scanf("%d", &n);
getchar();
char s[1005];
scanf("%s", s);
int a = 0, b = 0, c = 0, d = 0, e = 0;
for (int i = 0; i < n; i++)
{
if (s[i] == 'a')
a++;
if (s[i] == 'e')
b++;
if (s[i] == 'i')
c++;
if (s[i] == 'o')
d++;
if (s[i] == 'u')
e++;
}
printf("%d %d %d %d %d\n", a, b, c, d, e);
}
return 0;
}
G,我是签到题
Description
混一天和努力一天,一天看不出任何差别,
三天看不到任何变化,七天也看不到任何距离……
但是一个月后会看到话题不同,三个月后会看到气场不同,
半年后会看到距离不同,一年后会看到人生道路截然不同……
Input
无输入
Output
请按照格式输出下面这段话:
混一天和努力一天,一天看不出任何差别,
三天看不到任何变化,七天也看不到任何距离……
但是一个月后会看到话题不同,三个月后会看到气场不同,
半年后会看到距离不同,一年后会看到人生道路截然不同……
代码:
- int main()
- {
- printf("混一天和努力一天,一天看不出任何差别,\n三天看不到任何变化,七天也看不到任何距离……\n但是一个月后会看到话题不同,三个月后会看到气场不同,\n半年后会看到距离不同,一年后会看到人生道路截然不同……\n");
- return 0;
- }
Description
Caps lock是一种计算机键盘键。按此键可设置输入模式,默认情况下,键入的字母为大写。如果它是偶然按下的,它就会产生一些事故。
让我们考虑键入一个字符时Caps lock键意外打开的情况,如果:
1、它只包含大写字母;
2、除第一个字母外,所有字母都是大写的。
在这两种情况下,我们应该更改所有字母的大小写。例如,单词“hELLO”、“HTTP”、“z”的单词大小写应该改变。
编写一个应用上述规则的程序。如果无法应用规则,程序应保持单词不变。
Input
第一行包含一个由大写和小写字母组成的单词。单词的长度小于等于100。
Output
打印单词的处理结果。
题解:简单改变大小写的题,只需要考虑到何时改变;
在两种情况下需要改变小写:1,所有字母都是大写。2,第一个字母是小写,其余都是大写。3,只有一个小写字母(此种情况只需要在写完代码过后,验证自己写的代码符不符合,如果不符合,就在自己的代码中多加一个判断就行)。
c代码:
#include <stdio.h>
#include <string.h>
char s[111];
int main()
{
scanf("%s",s);
int len=strlen(s);
int sum=0;//统计大写字母的个数
for(int i=0;i<len;i++){
if(s[i]>='A'&&s[i]<='Z'){
sum++;//如果是大写就加一
}
}
if(sum==len){//如果全是大写字母
for(int i=0;i<len;i++){
s[i]+=32;//把所有的大写字母变成小写字母
}
}
else if(sum==len-1){//如果有len-1个大写字母,即只有一个小写字母
if(s[0]>='a'&&s[0]<='z'){
for(int i=0;i<len;i++){
if(i==0){
s[i]-=32;
}
else{
s[i]+=32;
}
}
}
}
printf("%s",s);
return 0;
}
cpp代码:
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
int main()
{
string s;
cin>>s;
int sum=0;
int len=s.length();
for(int i=0;i<len;i++){
if(s[i]>='A'&&s[i]<='Z'){
sum++;
}
}
if(sum==len||((s[0]>='a'&&s[0]<='z')&&sum==len-1)){
for(int i=0;i<len;i++){
if(s[i]>='A'&&s[i]<='Z'){
s[i]+=32;
}
else{
s[i]-=32;
}
}
cout<<s<<endl;
}
else{
cout<<s<<endl;
}
return 0;
}

浙公网安备 33010602011771号