• CSP 201512 | 201604考试题目


    201512第一题

    问题描述

    给定一个十进制整数n,输出n的各位数字之和。

    输入格式

    输入一个整数n。

    输出格式

    输出一个整数,表示答案。

    样例输入

    20151220

    样例输出

    13

    样例说明

    20151220的各位数字之和为2+0+1+5+1+2+2+0=13。

    评测用例规模与约定

    所有评测用例满足:0 ≤ n ≤ 1000000000。

    基本思路:

    通过对数n依次求模取得个位数,用sum相加,相加之后再依次除以10,去掉已经相加最后一位。

    代码实现

    #include "stdio.h"
    int main()
    {
        int n, sum;
        scanf("%d",&n);
        sum=0;
        while(n)///表示n不等于0
        {
            sum+=n%10;///n%10就是个位数
            n=n/10;///除10就是去掉最后一位
        }
        printf("%d",sum);
        return 0;
    }

    201512第二题

    问题描述

      消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。
      现在给你一个n行m列的棋盘,棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。
      请注意:一个棋子可能在某一行和某一列同时被消除。

    输入格式

      输入的第一行包含两个整数n, m,用空格分隔,分别表示棋盘的行数和列数。
      接下来n行,每行m个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。

    输出格式

    输出n行,每行m个整数,相邻的整数之间使用一个空格分隔,表示经过一次消除后的棋盘。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。

    样例输入

    4 5
    2 2 3 1 2
    3 4 5 1 4
    2 3 2 1 3
    2 2 2 4 4

    样例输出

    2 2 3 0 2
    3 4 5 0 4
    2 3 2 0 3
    0 0 0 4 4

    样例说明

    棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。

    样例输入

    4 5
    2 2 3 1 2
    3 1 1 1 1
    2 3 2 1 3
    2 2 3 3 3

    样例输出

    2 2 3 0 2
    3 0 0 0 0
    2 3 2 0 3
    2 2 0 0 0

    样例说明

    棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。

    评测用例规模与约定

    所有的评测用例满足:1 ≤ n, m ≤ 30

     

    代码实现

    #include <stdio.h>
    int main()
    {
        int NUM1;
        int NUM2;
        scanf("%d",&NUM1);
        scanf("%d",&NUM2);
        int a[NUM1][NUM2];
        int b[NUM1][NUM2];
        int i;
        int j;
        for(i=0; i<NUM1; i++)
        {
            for(j=0; j<NUM2; j++)
            {
                scanf("%d",&a[i][j]);
            }
        }
        for(i=0; i<NUM1; i++)
        {
            for(j=0; j<NUM2; j++)
            {
                b[i][j]=1;
            }
        }
        for(i=0; i<NUM1; i++)
        {
            for(j=0; j<NUM2; j++)
            {
                if(((j+2)<NUM2)&&(a[i][j]==a[i][j+1])&&(a[i][j]==a[i][j+2]))
                {
                    b[i][j]=0;
                    b[i][j+1]=0;
                    b[i][j+2]=0;
                }
                if(((i+2)<NUM1)&&(a[i][j]==a[i+1][j])&&(a[i][j]==a[i+2][j]))
                {
                    b[i][j]=0;
                    b[i+1][j]=0;
                    b[i+2][j]=0;
                }
            }
        }
        for(i=0; i<NUM1; i++)
        {
            for(j=0; j<NUM2; j++)
            {
                if(b[i][j]==0)
                {
                    a[i][j]=0;
                }
            }
        }
        printf("
    ");
        for(i=0; i<NUM1; i++)
        {
            for(j=0; j<NUM2; j++)
            {
               printf("%d ",a[i][j]);
            }
            printf("
    ");
        }
        return 0;
    }

    201604

    问题描述

      给定n个整数表示一个商店连续n天的销售量。如果某天之前销售量在增长,而后一天销售量减少,则称这一天为折点,反过来如果之前销售量减少而后一天销售量增长,也称这一天为折点。其他的天都不是折点。如下图中,第3天和第6天是折点。
      给定n个整数a1, a2, …, an表示销售量,请计算出这些天总共有多少个折点。
      为了减少歧义,我们给定的数据保证:在这n天中相邻两天的销售量总是不同的,即ai-1≠ai。注意,如果两天不相邻,销售量可能相同。 

    输入格式

      输入的第一行包含一个整数n。
      第二行包含n个整数,用空格分隔,分别表示a1, a2, …, an。

    输出格式

      输出一个整数,表示折点出现的数量。

    样例输入

    7
    5 4 1 2 3 6 4

    样例输出

    2

    评测用例规模与约定

    所有评测用例满足:1 ≤ n ≤ 1000,每天的销售量是不超过10000的非负整数。

    代码实现

    #include <stdio.h>
    
    #define N 1000
    
    int a[N];
    
    int main()
    
    {
    
        int n, i, count;
    
        // 读入数据
    
        scanf("%d", &n);
    
        for(i=0; i<n; i++)
    
            scanf("%d", &a[i]);
    
        // 计算折点
    
        count = 0;
    
        for(i=1; i<n-1; i++)
    
            if((a[i-1] < a[i] && a[i] > a[i+1]) || (a[i-1] > a[i] && a[i] < a[i+1]))
    
                count++;
    
        // 输出结果
    
        printf("%d
    ", count);
    
        return 0;
    }
    如果您因为文章内容想联系我,请您发送相关内容至邮箱1634506078@qq.com,或者直接私信我的博客园账号。 谢谢。
  • 相关阅读:
    (C#) 设定时间格式
    (WPF) MVVM: 动态添加控件及绑定。
    (WPF) MVVM: DataGrid Binding
    (WPF) MVVM: ComboBox Binding, XML 序列化
    (C#) 判断相等?
    ASP.NET MVC过滤器中权限过滤器ValidateAntiForgeryToken的用法(Post-Only)
    根据2个经纬度点,计算这2个经纬度点之间的距离
    ASP.NET导出Excel(利用NPOI和EPPlus库,无需安装Office)
    nopcommerce 二次开发
    SQL效率低下原因主要有
  • 原文地址:https://www.cnblogs.com/CoffeeSoul/p/11834044.html
Copyright © 2020-2023  润新知