题目
A.空间
题目描述
解题思路
1.我们可以把256MB换算成字节=>256*1024*1024*8/32
2.
答案:67,108,864
======
需要注意的是如果编程计算的话,int型结果会是-67,108,864,要把 *8/32变成/4
B.卡片
题目描述
解题思路
1.一开始看这题懵了一瞬间,然后意识到只是第2题,肯定不会考太难的知识点~~
2.然后自然而然地想到了暴力解法,遍历1~n,生成每个数后,判断剩余的卡片数num[i](0<=i<=9)是否<0,如果num[i]为负数,就说明卡牌数不足以拼凑出当前这个数;
3.输出结果减去1就是我们能拼成的最大数;
答案:3181
======
想到暴力法的原因还有一个,根据过去几年的蓝桥杯真题,都会出遍历数位的题~~~~~
C.直线
题目描述
解题思路
D.货物摆放
题目描述
解题思路
网友的思路
1.因数分解
把n的所有因数都找出来,存储;然后三重循环遍历暴力找~~~~
答案
2430
代码展示
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5;
/*
*/
vector<ll>num;
int main(){
ll n=2021041820210418;
for(ll i=1;i*i<=n;i++){
if(n%i==0){
num.push_back(i);
num.push_back(n/i);
}
}
int l=num.size();
//if()
int ans=0;
for(int i=0;i<l;i++){
for(int j=0;j<l;j++){
for(int k=0;k<l;k++){
if(num[i]*num[j]*num[k]==n){
ans++;
}
}
}
}
cout<<ans<<endl;
return 0;
}
考试时候的思路
1.令Get(x)返回n=x时的方案数;
2.找规律发现,把x分解为互质的两个数a,b,那么Get(a)*Get(b)=Get(x)
//规律不一定对,但是我验证的所有数据都满足
3.然后2021041820210418可分解为20210418*100000001;
暴力求Get(20210418)=270,Get(100000001)=9;
那么结果就是2430;
E.路径
题目描述
解题思路
1.第一遍看的时候,以为是填空的最后一题,肯定很难,加上数据也挺大,就没敢写;
2.在写完后面的题之后,再看了一遍,发现就是简单的建图+最短路;
3.关于最短路的求解,一开始我是用的dijkstra(),发现不行,顿时慌了;于是就硬着头皮上Floyd算法;
答案:10266837
代码展示
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF=1e10;
/*
*/
ll G[3000][3000];
ll dis[3000];
bool vis[3000];
void Dijkstra(){
dis[1]=0;
for(int i=0;i<2021;i++){
ll minnum=INF,u=-1;
for(int j=1;j<=2021;j++){
if(!vis[j]&&G[1][j]<minnum){
minnum=G[1][j];
u=j;
}
}
if(u==-1)return;
vis[u]=1;
for(int j=1;j<=2021;j++){
if(!vis[j]&&G[u][j]!=INF&&dis[j]>dis[u]+G[u][j]){
dis[j]=dis[u]+G[u][j];
}
}
}
}
void Floyd(){
for(int i=1;i<=2021;i++){
for(int j=1;j<=2021;j++){
for(int k=1;k<=2021;k++){
G[i][k]=min(G[i][k],G[i][j]+G[j][k]);
}
}
}
}
int main(){
fill(G[0],G[0]+3000*3000,INF);
fill(dis,dis+3000,INF);
for(int i=1;i<=2021;i++){
for(int j=0;j<=21;j++){
ll f=i*(i+j)/__gcd(i,i+j);
G[i][i+j]=f;
G[i+j][i]=f;
}
}
// Dijkstra();
//还不知道Dijkstra为啥不行~~~
Floyd();
cout<<G[1][2021]<<endl;
return 0;
}
F.时间显示
题目描述
解题思路
简单的模拟题,由于不需要考虑年月,所以直接求余24*60*60*1000(一天的时间)
剩下的就很容易了~~~~
G.砝码称重
题目描述
二分???
解题思路
H.杨辉三角形
题目描述
解题思路
I.双向路径
题目描述
解题思路
J.括号序列
题目描述
解题思路
https://blog.youkuaiyun.com/FallenSQL/article/details/115828657