[蓝桥杯]Excel题

[蓝桥杯]Excel题,第1张

[蓝桥杯]Excel题

文章目录
  • 前言
  • 2021 国赛
    • 完全日期
  • 2020 省赛(第二场)
    • 跑步锻炼
  • 2019 省赛
    • 年号字符
  • 2018 省赛
    • 第几天
  • 2015 省赛
    • 星系爆炸
  • END

前言

蓝桥杯的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 
#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 = %dn", 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星人造“炸d”,用来作为宇宙中的路标。
每个炸d都可以设定多少天之后爆炸。

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

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

【答案】

2017-08-05

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

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

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

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

【答案】

2017-08-05

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

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




END

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5683085.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存