欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 蓝桥杯填空题攻克

蓝桥杯填空题攻克

2025/11/22 22:00:47 来源:https://blog.csdn.net/pzn2506/article/details/147017558  浏览:    关键词:蓝桥杯填空题攻克

目录

1.握手问题(条件枚举)

2.门牌制作(十进制整数拆解)

3.九进制转十进制(进制转换)

 一.a 进制数转换为十进制数

二.十进制转换为a进制

4.跑步(日期问题)


1.握手问题(条件枚举)

 简单的条件枚举

假设前7个人,不互相握手,其他人互相握手

#include <iostream>
using namespace std;
int main()
{// 请在此输入您的代码int ret=0;for(int i=1;i<=50;i++){for(int j=i+1;j<=50;j++){if(i<=7 && j<=7) continue;else ret++;}}cout<<ret<<endl;return 0;
}

2.门牌制作(十进制整数拆解)

 

 所谓十进制整数拆解,就是将一个十进制整数x按照十进制拆解除每一位

#include <stdio.h>
#include <stdlib.h>int main(int argc, char *argv[])
{int count=0;for(int i=1;i<=2020;i++){for(int j=i;j>0;j=j/10){if(j%10==2){count++;}}}printf("%d",count);// 请在此输入您的代码return 0;
}

3.九进制转十进制(进制转换)

 一.a 进制数转换为十进制数

计算方式是把每一位上的数字乘以该位的权重,再将所有结果相加,最终得到对应的十进制数。

例如对于一个二进制数101,转换成十进制过程为:

=1×2^2+0×2^1+1×2^0

=4+0+1

=5​

二.十进制转换为a进制

例如,将十进制数 13 转换为二进制数(a = 2)的过程:

  • 第 1 步:13 ÷ 2 = 6...1,余数为 1。
  • 第 2 步:6 ÷ 2 = 3...0,余数为 0。
  • 第 3 步:3 ÷ 2 = 1...1,余数为 1。
  • 第 4 步:1 ÷ 2 = 0...1,余数为 1。

将余数从下往上排列结果为1101,因为取余顺序与结果相反,所以使用队列的先进先出,每次取余将结果压入队列

#include<bits/stdc++.h>
using namespace std;//将 a 进制数 num 转换为十进制数
int convertother(int a, int num)
{int b = 0;int ret = 0;int i = 0;// 当 num 大于 0 时,说明还有位需要处理,继续循环while(num > 0){// 通过取余运算得到 num 的最低位数字b = num % 10;// 将 num 除以 10,去掉已经处理过的最低位num /= 10;// 把当前位数字 b 乘以 a 的 i 次幂,累加到结果 ret 中ret += b * pow(a, i);i++;}return ret;
}//将十进制数 num 转换为 a 进制数
int convert2other(int a, int num)
{int b = 0;// 变量 ret 用于存储最终转换得到的 a 进制结果int ret = 0;// 变量 i 作为指数,用于表示当前位对应的 10 的幂次int i = 0;queue<int> mod;// 当 num 大于 0 时,继续进行除 a 取余操作while(num > 0){// 计算 num 除以 a 的余数b = num % a;// 将 num 除以 a 并取整num /= a;// 把余数 b 压入队列 mod 中mod.push(b);}while(!mod.empty){// 取出队列的队首元素b = mod.front();// 把队首元素乘以 10 的 i 次幂,累加到结果 ret 中ret += b * pow(10, i);// 指数 i 加 1,为处理下一位做准备i++;}return ret;
}int main()
{int a = 9;int num = 2022;int s = convertother(a, num);cout << s << endl;return 0;
}

4.跑步(日期问题)

考点:

  1. 判断闰年
  •       if(y % 4==0 && y % 100!=0 && m==2 || y%400==0 && m==2) 
  1. 日期的遍历,一个日期到另一个日期的遍历
  2. 星期的判断,如某天是星期几
#include <iostream>
using namespace std;
int ds[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{// 请在此输入您的代码int sy=2022;int ey=2022;int week=6;int ans=0;for(int y=sy;y<=ey;++y)//枚举年{for(int m=1;m<=12;++m)//枚举月{int dd=ds[m];//判断闰年if(y % 4==0 && y % 100!=0 && m==2 || y%400==0 && m==2) dd=29;for(int d=1;d<=dd;++d)//枚举日{if(week==0 || week==6 || d%10==1) ans++;//判断是否满足题目week=(week+1)%7;//向后推移星期几}}}cout<<ans<<endl;return 0;
}

谢谢

版权声明:

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

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

热搜词