2021第十二届蓝桥杯C/C++B组省赛 第一场 部分题目总结

试题A:

在这里插入图片描述
思路:考计算机基础知识
bit:位,又名比特,缩写是b,是计算机中最小的数据单位,其实就是0,1这样的二进制位
Byte:字节,缩写是B,是计算机文件大小的基本计算单位,一个字符是1Byte,如果是汉字,则是2Byte
1Byte=8bit
1Byte=8bit(1B=8b) 1个字节=8位,即一个字节由8个二进制位构成
1KB=1024Byte
1MB=1024KB
1GB=1024MB
1TB=1024GB
所以本题:
1个32位二进制数占4个字节
25610241024/4=67108864
答案:67108864

试题B:卡片

在这里插入图片描述
思路:签到题,用一个数组去存0-9的卡片,然后从1开始暴力枚举每一个数,拆分出每一位x,对应的数组中x的个数减一,如果这个数对应的卡片数量用完了,那么就不能再继续拼下去了

#include<bits/stdc++.h>
using namespace std;
int a[10];
int ans=0;
int check(int n)
{
   
	while(n>0)
	{
   
		int x=n%10;
		a[x]--;
		n/=10;
		if(a[x]==0)
		{
   
			return 0;
		}
	}
	return 1;
} 
int main()
{
   
	for(int i=0;i<=9;i++)
	{
   
		a[i]=2021;
	}
	for(int i=1;;i++)
	{
   
		 int flag=check(i);
		 if(flag==0)
		 {
   
		 	ans=i;
		 	break;
		 }
	} 
	cout<<ans<<endl;
}

答案:3181

试题C 直线

这个题要特别注意map容器的用法,这里的键是一个数对
在这里插入图片描述
思路:先4重循环枚举可以组成的点的所有斜率k和截距b,其中注意类型转换,其中截距b的计算不能通过k直接求出,要通过两个点的坐标得出,减少误差,为了避免除数为0的情况,如果两个点的横坐标一样,要单独计算,所以最后的答案要加20,利用map容器去标记,然后统计即可

#include<iostream>
#include<map>
using namespace std;
map<pair<double, double>, int> mapp;
int main() {
   
	int ans = 0;
	for (int i = 0; i <= 19; i++) {
   //枚举第一个点的横坐标 
		for (int j = 0; j <= 20; j++) {
   //枚举第一个点的纵坐标 
			for (int k = 0; k <= 19; k++) {
   //枚举第一个点的横坐标 
				for (int h = 0; h <= 20; h++) {
   //枚举第一个点的纵坐标 
					double i1 = i;//类型转换 
					double j1 = j;
					double k1 = k;
					double h1 = h;
					
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值