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

 请按照格式输出下面这段话:

混一天和努力一天,一天看不出任何差别,
三天看不到任何变化,七天也看不到任何距离……
但是一个月后会看到话题不同,三个月后会看到气场不同,
半年后会看到距离不同,一年后会看到人生道路截然不同……

 

代码:

  1. #include <cstdio>
  2. int main()
  3. {
  4. printf("混一天和努力一天,一天看不出任何差别,\n三天看不到任何变化,七天也看不到任何距离……\n但是一个月后会看到话题不同,三个月后会看到气场不同,\n半年后会看到距离不同,一年后会看到人生道路截然不同……\n");
  5. return 0;
  6. }
H,Caps lock
 

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;
}

  

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM