第十二届蓝桥杯大赛软件赛省赛 C/C++ 大学B组
生活随笔
收集整理的這篇文章主要介紹了
第十二届蓝桥杯大赛软件赛省赛 C/C++ 大学B组
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
試題A :空間
67108864試題B :卡片
// 答案是 3181 #include <iostream> using namespace std;int nums[15];bool check(int x) {while (x){int now = x % 10;x /= 10;if (nums[now] < 1) return false;nums[now] -- ;}return true; }int main() {for (int i = 0; i <= 9; i ++ ) nums[i] = 2021;for (int i = 1; ; i ++ ){if (!check(i)){cout << i - 1;return 0;}} }試題C :直線
- 需要注意當(dāng)垂直于x軸使無法計算斜率
- 注意計算b時,式子中不要涉及到k,可以用整型,就不要用浮點數(shù)計算
試題D : 貨物擺放
- a?b?c==na*b*c==na?b?c==n,不可能直接枚舉,發(fā)現(xiàn)abc的特點就是它們都是n的約束,因此我們可以直接枚舉n的所有約數(shù),復(fù)雜度大大降低
試題E :路徑
// 答案是10266837 #include <iostream> #include <cstring> using namespace std;const int N = 2030;int gcd(int a, int b) {return b ? gcd(b, a % b) : a; }int dist[N][N];int main() {memset(dist, 0x3f, sizeof dist);for (int i = 1; i <= 2021; i ++ )for (int j = 1; j <= 2021; j ++ ){if (i == j) dist[i][j] = 0;else if (abs(i - j) <= 21) dist[i][j] = min(dist[i][j], i * j / gcd(i, j));}for (int i = 1; i <= 2021; i ++ )for (int j = 1; j <= 2021; j ++ )for (int k = 1; k <= 2021; k ++ )dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]);cout << dist[1][2021]; }試題F :時間顯示
#include <iostream> #include <cstring> using namespace std;typedef long long ll;int main() {ll n; cin >> n;ll time = n / 1000;ll ss = time % 60;ll mm = time / 60 % 60;ll hh = time / 3600 % 24;printf("%02lld:%02lld:%02lld", hh, mm, ss); }試題G :砝碼稱重
- 砝碼可以放在天平兩邊或者不放,相當(dāng)于砝碼的重量可以為正貢獻(xiàn)也可以為負(fù)貢獻(xiàn)或者沒有貢獻(xiàn)
- 由于j + w[i],因此可能會出現(xiàn)越界,要把M開大一些
試題H :楊輝三角形
- 由于左右對稱,要找第一次出現(xiàn)的位置,因此右半部分不需要考慮
- 楊輝三角中每個數(shù)都可以用 組合 來表示,且同一行中的下角標(biāo)相同,同一斜行的上角標(biāo)相同
- 1e9數(shù)據(jù),以行和列來枚舉是不現(xiàn)實的,因此我們考慮以每一斜行(下面以“列”代稱)來入手
- 每一列中,從上到下嚴(yán)格單調(diào)遞增,因此,在每一列中,可以用二分查找n,而且我們發(fā)現(xiàn)在僅使用一半的楊輝三角以后,每一列中最上面的那個數(shù)是C2iiC^{i}_{2i}C2ii?,而最下面的那個數(shù)僅與當(dāng)前枚舉的行數(shù)有關(guān),最多肯定是n行,則為C2n1C^{1}_{2n}C2n1?;列與列之間,最上面的數(shù)是遞增的,且越靠下的列出現(xiàn)第一次出現(xiàn)的數(shù)的概率更高,因此,我們從最下面的列開始枚舉,從計算最上面的數(shù)可知我們只需要枚舉到第十七列(從第零列開始)
- 關(guān)于如果計算CnmC^{m}_{n}Cnm?的優(yōu)化
試題I :雙向排序(暫跳)
試題J :括號序列
總結(jié)
以上是生活随笔為你收集整理的第十二届蓝桥杯大赛软件赛省赛 C/C++ 大学B组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哈尔滨工业大学-数据库系统(基本知识与关
- 下一篇: 尚硅谷最新版JavaWeb全套教程,ja