试题A:空间
解析
(一)
1B = 8 bit
1KB = 1024B
1MB = 1024KB
所以256MB占据256102410248个bit,一个元素占32bit,所以一共有
256102410248/32 = 67108864
(二)
32位二进制为4字节相当于一个int,所以一共有
25610241024/4 = 67108864
试题B:卡片
解析
思维题,注意输出时减一
题解
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
int s[11];
bool check(int x){
while(x){
int t=x%10;
x/=10;
s[t]--;
if(s[t]<0) return false;
}
return true;
}
int main(){
for(int i=0;i<10;i++){
s[i]=2021;
}
for(int i=1;;i++){
if(!check(i)){
cout<<i-1<<endl;
return 0;
}
}
return 0;
}
3181
试题C:直线
解析
枚举出所有两两点构成的直线,再根据y = k * x + b 判断直线是否唯一
注意:1,k与x为浮点数计算,其比较时相差在1e-8间都默认相等
2,注意k不存在的情况,最后要将其补上
题解
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
using namespace std;
const int N = 2e5;
int n;
struct Line{
double k,b;
//结构体内镶排序,远快于cmp外部排序
bool operator< (const Line& t) const{
if(k != t.k) return k < t.k;
else return b < t.b;
}
}l[N];
int main(){
for(int x1 = 0;x1 < 20;x1 ++)
for(int y1 = 0;y1 < 21;y1 ++)
for(int x2 = 0;x2 <20;x2 ++)
for(int y2 = 0;y2 < 21;y2 ++){
//注意x1 != x2为K存在时
if(x1 != x2){
double k = (double)(y2 - y1) / (x2 - x1);
double b = y1 -k * x1;
l[n ++] = {k, b};
}
}
sort(l, l + n);
int res = 1;
for(int i = 1;i < n;i ++){
//注意计算机计算浮点数会有误差,所以一般相差在1e-8之间认为两个浮点数相同
if(fabs(l[i].k - l[i-1].k) > 1e-8 || fabs(l[i].b - l[i - 1].b) > 1e-8)
res ++;
}
cout << res + 20 << endl;
return 0;
}
40257
试题D: 货物摆放
解析
吐槽一下,相对简单的一题,然而菜鸡却还是没有写出来
题解
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long ll;
const ll N = 2021041820210418;
vector<ll> g(ll N){
//基础基础基础!!重要的事情说三遍
vector<ll> res;
for(ll i = 1;i <= N/i;i ++){
if(N % i == 0){
res.push_back(i);
if(i != N / i) res.push_back(N / i);
}
}
//可有可无
sort(res.begin(), res.end());
return res;
}
int main(){
auto res = g(N);
ll l = res.size();
int ans;
for(int i = 0;i < l;i ++){
for(int j = 0;j < l;j ++){
for(int k = 0;k < l;k ++){
if(res[i]*res[j]*res[k] == N)
ans++;
}
}
}
cout<<ans<<endl;
return 0;
}
2430
总结
第一次蓝桥杯,犯了很多低级错误,总的来说还是基础不牢,代码打的不够多,继续加油!!