[蓝桥杯]Excel题

前言

蓝桥杯的excel题是什么?很多小伙伴看到这个标题感觉很疑惑,蓝桥杯不是只有填空和代码题吗?excel题是什么玩意?

这里我来解释一下,由于蓝桥杯的比赛环境有一套自己的系统,没有像别的比赛限制那么大~~(没错,说的就是PTA)~~。

因此我们可以使用各种电脑自带的工具,比如windows的时间,画图等等

但我们这里要看的是功能的强大性远超你想象的excel,(本文以wps中的excel为例使用)

借助这些工具,我们甚至可以在不会编写代码的状况下完美的获取正确答案!

本文讲解一些题目的具体操作,以后有精力会继续补充

因为各个组别有很多题都重复,所以只标注年份和省/国赛

2021 国赛

完全日期

【问题描述】

如果一个日期中年月日的各位数字之和是完全平方数,则称为一个完全日期。

例如:2021 年 6 月 5 日的各位数字之和为 2 + 0 + 2 + 1 + 6 + 5 = 16,而16 是一个完全平方数,它是 4 的平方。所以 2021 年 6 月 5 日是一个完全日期。

例如:2021 年 6 月 23 日的各位数字之和为 2 + 0 + 2 + 1 + 6 + 2 + 3 = 16,是一个完全平方数。所以 2021 年 6 月 23 日也是一个完全日期。

请问,从 2001 年 1 月 1 日到 2021 年 12 月 31 日中,一共有多少个完全日期?

【答案】

977

自己写一个日期递增的方法必然很麻烦

并且容易写错细节 比如忘了润年怎么判断怎么

bool isLeapYear (int n)
{
    //可以被400整除 || 可以被4整除却不能被100整除
    //优先级 && > ||
    return ( (n%400 == 0) || (n%100 != 0 && n%4 == 0)) ? true : false;
}

因此我们可以直接在excel里面拖动,获取所有的日期,在写一个简单的程序就能计算出来了

在这里插入图片描述

输入一种日期形式,然后只管拖动,直到日期到达2021/12/31

可能时间比较漫长(其实都不用一首歌),但是能够保证百分之百的正确!

在这里插入图片描述

共7672行,然后ctrl+c

#include <bits/stdc++.h>
#define int long long
using namespace std;

signed main (void)
{
    string s;

    int ans = 0;
    while (cin >> s) {
        int sum = 0;
        for (auto &ch : s) {
            if(isdigit(ch)) {
                sum += ch - '0';
            }
        }
        int Sqrt = sqrt(sum);
        if (Sqrt* Sqrt == sum) {
            ans++;
        }
    }

    printf("**********\n");
    printf("ans = %d\n", ans);
    printf("**********\n");

    return 0;
}

运行程序,直接在黑窗口里复制,最后按ctrl+z退出循环

在这里插入图片描述

2020 省赛(第二场)

跑步锻炼

【问题描述】
小蓝每天都锻炼身体。正常情况下,小蓝每天跑1千米。如果某天是周一或者月初(1日),为了激励自己,小蓝要跑2千米。如果同时是周一或月初,小蓝也是跑2千米。

小蓝跑步已经坚持了很长时间,从2000年1月1日周六(含)到2020年10月1日周四(含)。请问这段时间小蓝总共跑步多少千米?

【答案】

8879

该题的关键就是找到周一和每月的一号

其实写代码也可以解决,但是如果用到excel可以做到一行代码也不写就算出来

日期只管拖就完事了

在这里插入图片描述

注意这里我多写了一行标题属性,所以从2000年1月1日 到 2020年10月1日 共有7580

筛选周一

然后第二列我们需要用到excel的一个函数weekday() 注意这里的周一是数字2

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

共有1083个周一

筛选月初

这里我们还需要一列需要用到day()函数

year() month() day() 三兄弟函数分别获取日期类型的年月日

在这里插入图片描述

在这里插入图片描述

共有250个月初

把即是周一有又是月初的筛选出来

在这里插入图片描述

共有34个月初和周一重合

最后计算答案(没错,你甚至可以用计算器,cmd中快捷指令calc

sum = 总天数+周一天数+月初天数-重合天数

在这里插入图片描述

2019 省赛

年号字符

【问题描述】
小明用字母 A对应数字 1,B对应 2,以此类推,用 Z对应 26。

对于 27以上的数字,小明用两位或更长位的字符串来对应,例如 AA对应27,AB对应28,AZ对应52,LQ对应329。

请问2019对应的字符串是什么?

【答案】

BYQ

代码实现见leetcode:168. Excel表列名称

而在蓝桥杯中也有原题:2017初赛 Excel地址

class Solution {
public:
    string convertToTitle(int columnNumber) {
        string s;
        int n = columnNumber;
        while(n) {
            s += (n-1)%26+'A';
            n = (n-1)/26;
        }
        reverse(s.begin(), s.end());
        return s;
    }
};

本题是赤裸裸的excel题,(纯度100%)直接横着拖就完事了

虽然大家很明显的可以看出这是一个26进制的问题,但是具体写代码的细节是真的多

在这里插入图片描述

在这里插入图片描述

在操作过程中发现一件事情,就是后缀为.xls的excel只能拖动255列,而.xlsx就没有这个限制了

2018 省赛

第几天

【问题描述】
2000年的1月1日,是那一年的第1天。

那么,2000年的5月4日,是那一年的第几天?

【答案】

125

这题也挺纯的,直接拖日期

好吧,其实这题直接用手算都行,但谁叫我们懒呢

在这里插入图片描述

2015 省赛

星系爆炸

【问题描述】
在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。

比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。

请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19

【答案】

2017-08-05

又是一道赤裸的日期题目。

X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。

比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。

请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19

【答案】

2017-08-05

又是一道赤裸的日期题目。

具体操作和上文讲到的类似,大家就自行操作吧。




END

  • 25
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值