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