A
找出來1到2020之間數位為2的數量。
不用特別去考慮,直接循環即可
B
求分子分母最小因子為1的。
跑兩個for循環,寫一個gcd就可以了
答案:2481215
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)這個位置的數是幾。
可以用等差數列做一下。
或者暴力跑
答案:761
// 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
跑步
從2000/01/01到202010/01
周一跑2km,月初跑2km,其他都跑1km
直接模擬就好了
E
感覺好多大佬都做出來了
思路和代碼來自網絡:
一共七個燈管,狀態壓縮枚舉所有狀態,然后dfs搜一下是否連通。
F
計算合格率,優秀率
擴大計算即可
G
從輸入的年份開始枚舉到9999,找到符合條件的就break;
找回文類型的年份+月份+日期
20200202 和 ABABBABA 類型
個人思路是直接暴力向上遞推時間
H
算所有區間不同字母的個數。
第一眼想到用樹狀數組解,但太久沒寫了。放棄。。。
直接暴力模擬,騙50%數據
賽后重新想了下,應該計算每個字母的貢獻值,假設每個區間都是第一個出現的字母貢獻,則每個字母貢獻值是左邊沒出現相同字母乘上右邊到最后的長度
i
沒怎么接觸過,估計涼了。
j
emmm,完全打表寫前面的數據了
蒟蒻表示希望不會打鐵