2020年第十一屆藍橋杯省賽 第二場(10月17日)B組我的題解

A

找出來1到2020之間數位爲2的數量。ios

不用特別去考慮,直接循環便可c++

B

求分子分母最小因子爲1的。數組

跑兩個for循環,寫一個gcd就能夠了網絡

答案:2481215spa

int main() {
    // freopen("in.txt","r",stdin);
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    int cnt = 0;
    for (int i = 1; i <= 2020; ++i)
        for (int j = 1; j <= 2020; ++j) cnt += __gcd(i, j) == 1;
    cout << cnt << endl;
}
//另外一種寫法
int main() {
    // freopen("in.txt","r",stdin);
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    int cnt = 0;
    for (int i = 1; i <= 2020; ++i)
        for (int j = i + 1; j <= 2020; ++j) cnt += __gcd(i, j) == 1;
    cout << (cnt << 1) + 1 << endl;
}
//本質是同樣的

C

蛇形圖(20,20)這個位置的數是幾。code

能夠用等差數列作一下。ci

或者暴力跑it

答案:761io

// Author : RioTian
// Time : 20/10/18
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
    // freopen("in.txt","r",stdin);
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    bool flag = true;
    for (int x = 1, y = 1, k = 1;; k++) {
        if (x == 20 && y == 20) {
            cout << k << endl;
            break;
        }
        if (flag)
            if (x - 1)  --x, ++y;
            else  ++y, flag = false;
        else if (y - 1)  ++x, --y;
        else ++x, flag = true;
    }
}

D

跑步for循環

從2000/01/01到202010/01

週一跑2km,月初跑2km,其餘都跑1km

直接模擬就行了

E

感受好多大佬都作出來了

思路和代碼來自網絡:

一共七個燈管,狀態壓縮枚舉全部狀態,而後dfs搜一下是否連通。

 

F

計算合格率,優秀率

擴大計算便可

G

從輸入的年份開始枚舉到9999,找到符合條件的就break;

找回文類型的年份+月份+日期

20200202 和 ABABBABA 類型

我的思路是直接暴力向上遞推時間

H

算全部區間不一樣字母的個數。

第一眼想到用樹狀數組解,但過久沒寫了。放棄。。。

直接暴力模擬,騙50%數據

賽後從新想了下,應該計算每一個字母的貢獻值,假設每一個區間都是第一個出現的字母貢獻,則每一個字母貢獻值是左邊沒出現相同字母乘上右邊到最後的長度

i

沒怎麼接觸過,估計涼了。

j

emmm,徹底打表寫前面的數據了

蒟蒻表示但願不會打鐵

相關文章
相關標籤/搜索