文章目錄

前言

藍橋杯的題是什么?很多小伙伴看到這個標題感覺很疑惑,藍橋杯不是只有填空和代碼題嗎?題是什么玩意?

這里我來解釋一下,由于藍橋杯的比賽環境有一套自己的系統,沒有像別的比賽限制那么大~~(沒錯,說的就是PTA)~~。

因此我們可以使用各種電腦自帶的工具,比如的時間,畫圖等等

但我們這里要看的是功能的強大性遠超你想象的,(本文以wps中的為例使用)

借助這些工具,我們甚至可以在不會編寫代碼的狀況下完美的獲取正確答案!

本文講解一些題目的具體操作,以后有精力會繼續補充

因為各個組別有很多題都重復,所以只標注年份和省/國賽

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;
}

因此我們可以直接在里面拖動,獲取所有的日期,在寫一個簡單的程序就能計算出來了

輸入一種日期形式,然后只管拖動,直到日期到達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 = %d\n", ans);
    printf("**********\n");
    return 0;
}

運行程序,直接在黑窗口里復制,最后按ctrl+z退出循環

2020 省賽(第二場) 跑步鍛煉

【問題描述】

小藍每天都鍛煉身體。正常情況下,小藍每天跑1千米。如果某天是周一或者月初(1日),為了激勵自己,小藍要跑2千米。如果同時是周一或月初,小藍也是跑2千米。

小藍跑步已經堅持了很長時間,從2000年1月1日周六(含)到2020年10月1日周四(含)。請問這段時間小藍總共跑步多少千米?

【答案】

8879

該題的關鍵就是找到周一和每月的一號

其實寫代碼也可以解決,但是如果用到可以做到一行代碼也不寫就算出來

日期只管拖就完事了

注意這里我多寫了一行標題屬性,所以從2000年1月1日 到 2020年10月1日 共有7580天

篩選周一

然后第二列我們需要用到的一個函數() 注意這里的周一是數字2

共有1083個周一

篩選月初

這里我們還需要一列需要用到day()函數

year() () day() 三兄弟函數分別獲取日期類型的年月日

共有250個月初

把即是周一有又是月初的篩選出來

共有34個月初和周一重合

最后計算答案(沒錯,你甚至可以用計算器,cmd中快捷指令calc)

sum = 總天數+周一天數+月初天數-重合天數

2019 省賽 年號字符

【問題描述】

小明用字母 A對應數字 1,B對應 2,以此類推,用 Z對應 26。

對于 27以上的數字,小明用兩位或更長位的字符串來對應,例如 AA對應27,AB對應28,AZ對應52,LQ對應329。

請問2019對應的字符串是什么?

【答案】

BYQ

代碼實現見:168. 表列名稱

而在藍橋杯中也有原題:2017初賽 地址

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;
    }
};

本題是赤裸裸的題,(純度100%)直接橫著拖就完事了

雖然大家很明顯的可以看出這是一個26進制的問題,但是具體寫代碼的細節是真的多

在操作過程中發現一件事情,就是后綴為.xls的只能拖動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天,請你計算它爆炸的準確日期。