前言
蓝桥杯的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
又是一道赤裸的日期题目。文章来源:https://www.toymoban.com/news/detail-428992.html
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
又是一道赤裸的日期题目。
具体操作和上文讲到的类似,大家就自行操作吧。文章来源地址https://www.toymoban.com/news/detail-428992.html
END
到了这里,关于[蓝桥杯]Excel题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!