当前位置: 首页> 汽车> 车展 > 洛谷 P8741 [蓝桥杯 2021 省 B] 填空问题 题解

洛谷 P8741 [蓝桥杯 2021 省 B] 填空问题 题解

时间:2025/7/10 2:14:40来源:https://blog.csdn.net/xzz_0611/article/details/139449850 浏览次数: 2次

题目分析

A 空间

简单的单位换算题:
1 MB = 1024 KB = 1048576 B = 8388608 b 256 × 8388608 ÷ 32 = 67108864 1\text{MB}=1024\text{KB}=1048576\text{B}=8388608\text b\\ 256\times8388608\div32=67108864 1MB=1024KB=1048576B=8388608b256×8388608÷32=67108864
故答案为 67108864 67108864 67108864

B 卡片

用一个数组存储每种卡片剩余的数量,再从 1 1 1 开始,一个个判断每个数需要的卡片是否够用,如果不够用了就输出结果。最终可以得到答案为 3181 3181 3181

C 直线

枚举每一种组合然后去掉重复的部分即可。

对于去重,可以使用 set 来实现。

代码如下:

#include<iostream>
#include<algorithm>
#include<vector>
#include<set>
using namespace std;
signed main() {ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);vector<pair<int,int>>vec;set<pair<pair<int,int>,int>>ans;for(int i=1;i<=20;++i) for(int j=1;j<=21;++j) vec.push_back({i,j});//枚举组合for(int i=0;i<vec.size()-1;++i)for(int j=i+1;j<vec.size();++j) {int x1=vec[i].first,y1=vec[i].second,x2=vec[j].first,y2=vec[j].second;int a=x2-x1,b=y1-y2,c=x1*y1-x2*y2;int gcd=__gcd(__gcd(a,b),c);ans.insert({{b/gcd,a/gcd},c/gcd});//去重}cout<<ans.size();//输出答案return 0;
}

得到答案为 40257 40257 40257

D 货物摆放

计算出 n n n 的所有因数储存起来,再枚举所有的组合,如果乘积刚好等于 n n n,就累加答案。最终可以得到答案为 2430 2430 2430

E 路径

就是一个求最短路径的板子题,可以使用 Dijkstra 算法。最终得到答案是 10266837 10266837 10266837

Code

#include<iostream>
using namespace std;
signed main() {ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);string ans[]={"67108864","3181","40257","2430","10266837"};cout<<ans[getchar()-'A'];return 0;
}
关键字:洛谷 P8741 [蓝桥杯 2021 省 B] 填空问题 题解

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: