2020年第11届蓝桥杯C/C++B组 第一轮省赛

# JJU-干干

 

试题 A: 跑步训练

在这里插入图片描述

代码:

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
    int power=10000;
    int time;
    int redP = 600/60; //每秒减少体力 
    int addP = 300/60; // 每秒增加体力 
    int flag=1;        //小明先跑,即先消耗,flag=1(奇数),再休息,即增加体力,flag=0 (偶数) 
    for(time=1;;time++){
        if(flag==1){
            power-=redP;
        }else{
            power+=addP;
        }
        if(power<=0){
            break;
        }
        if(time%60==0){
            if(flag==1){
                flag=0; // 奇数个60秒后,接下来就是第偶数个60秒,即为增加体力 
            }else{
                flag=1; // 偶数个60秒后,接下来就是第奇数个60秒,即为减少体力 
            }
        }
    }
    printf("%d",time);
    return 0;
}

运行结果:

 

 

试题 F: 整除序列

在这里插入图片描述

代码:

#include <iostream>
#include <bits/stdc++.h> 
using namespace std;
typedef long long ll;

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
    ll n;
    cin >>n;
    while(n!=0){
        printf("%lld ",n);
        //n >>=1;
        n = n/2;
    }
    return 0;
}

运行结果:

 

 

试题 G:解码(程序设计)

题意
在这里插入图片描述
在这里插入图片描述

代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
    char a[10000];
    int len;
    int i,j;
    char temp;
    gets(a);
    len = strlen(a);
    for(i=0;i<len;i++){
        if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')){
            printf("%c",a[i]);
            temp = a[i];
        }
        if(a[i]>='2'&&a[i]<='9'){
            for(j=0;j<(a[i]-'0'-1);j++){
                printf("%c",temp);
            }
        }
            
    }
    return 0;
}

运行结果:

 

 

试题 I:整数拼接(程序设计)

题意
在这里插入图片描述
在这里插入图片描述

代码

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
/*代码有待改进,不能满足所有的实例,50%的实例应该可以*/ 

// 计算数的位数 
int cal_len(int n){
    int count=0;
    while(n!=0){
        count++;
        n=n/10;
    }
    return count;
}

// 计算10的n次方 
int cal_pow(int n){
    int sum=1;
    int i=0;
    for(i=0;i<n;i++){
        sum*=10;
    }
    return sum;
}

// 计算拼接后数的和 
int cal_sum(long n1,long n2,long len){
    long sum1=0;
    long sum2=0;
    long i=0;
    while(n1!=0){
        sum1+=(n1%10)*cal_pow(i+len);
        i++;
        n1=n1/10;
    }
    i=0;
    while(n2!=0){
        sum2+=(n2%10)*cal_pow(i);
        i++;
        n2=n2/10;
    }
    return (sum1+sum2);
}


int main(int argc, char *argv[]) {
    long a[10000];
    long n,k;
    int i,j;
    int count=0;
    long sum;
    int len1,len2;
    
    scanf("%d",&n);
    scanf("%d",&k);
    for(i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
     
    for(i=0;i<n;i++){
        for(j=i+1;j<n;j++){
            len1 = cal_len(a[i]);
            len2=cal_len(a[j]);
            sum = cal_sum(a[i],a[j],len2);
            if(sum%k==0) count++;
            sum = cal_sum(a[j],a[i],len1);
            if(sum%k==0) count++;
        }
    }
    printf("%d",count);
    return 0;
}

 

运行结果:

 

试题 H:走方格(程序设计)

题意
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码:

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
    int a[40][40];
    int i,j;
    int m,n;
    a[1][1]=1;
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++){
            if(i==1&&j==1){
                continue;
            }
            if(i%2==0&&j%2==0){  // 行为偶,列为偶 ,不符合题意,则置零 
                a[i][j]=0;
            }else{ 
                if(j==1){        // 处于第一列的位置,只能从上面过来 
                    a[i][j]=a[i-1][j];
                }else if(i==1){  // 处于第一行的位置,只能从左边过来 
                    a[i][j]=a[i][j-1];
                }else{
                    a[i][j]=a[i-1][j]+a[i][j-1]; // 处于中间的,可从上或从左边来 
                }
            }    
        }
    } 
    printf("%d",a[n][m]);
    return 0;
}

运行结果:

 

posted @ 2021-04-16 19:35  ZengZG  Views(263)  Comments(0Edit  收藏  举报