蓝桥杯上岸必刷!!!(进制、数位专题)
距离蓝桥杯省赛倒数最后1天 ❗️ ❗️ ❗️
还没背熟模板的伙伴们背起来 💪 💪 💪
大家好 我是寸铁💪
真题千千万万遍,蓝桥省一自然现! ✌️
日更3000里,蓝桥眷顾你 🌟
暴力出奇迹,打表过样例 👊
冲刺蓝桥杯省一模板大全来啦 🔥
蓝桥杯4月8号就要开始了 🙏
距离蓝桥杯省赛倒数第3天 ❗️ ❗️ ❗️
还没背熟模板的伙伴们背起来 💪 💪 💪
真题千千万万遍,蓝桥省一自然现! ✌️
日更3000里,蓝桥眷顾你 🌟
暴力出奇迹,打表过样例 👊
祝大家4月8号蓝桥杯上岸 ☀️
不清楚蓝桥杯考什么的点点下方👇
考点秘籍
想背纯享模版的伙伴们点点下方👇
蓝桥杯省一你一定不能错过的模板大全(第一期)
蓝桥杯省一你一定不能错过的模板大全(第二期)
蓝桥杯省一你一定不能错过的模板大全(第三期)
蓝桥杯省一你一定不能错过的模板大全(第四期)!!!
想背注释模版的伙伴们点点下方👇
蓝桥杯必背第一期
蓝桥杯必背第二期
往期精彩回顾
蓝桥杯上岸每日N题 第一期(一)!!!
蓝桥杯上岸每日N题第一期(二)!!!
蓝桥杯上岸每日N题第一期(三)!!!
蓝桥杯上岸每日N题第二期(一)!!!
蓝桥杯上岸每日N题第三期(一)!!!
蓝桥杯上岸每日N题 第四期(最少刷题数)!!!
蓝桥杯上岸每日N题 第五期(山)!!!
蓝桥杯上岸每日N题 第六期(求阶乘)!!!
蓝桥杯上岸每日N题 第七期(小猫爬山)!!!
蓝桥杯上岸每日N题 第八期 (全球变暖)!!!
操作系统期末题库 第九期(完结)
LeetCode Hot100 刷题(第三期)
idea创建SpringBoot项目报错解决方案
数据库SQL语句(期末冲刺)
想看JavaB组填空题的伙伴们点点下方 👇
填空题
竞赛干货
算法竞赛字符串常用操作大全
蓝桥杯上岸必刷!!!(模拟/枚举专题)
蓝桥杯上岸必背!!! (第三期 DP)
蓝桥杯上岸必背!!!(第四期DFS)
蓝桥杯上岸必背!!!(第五期BFS)
蓝桥杯上岸必背!!!(第六期树与图的遍历)
蓝桥杯上岸必背!!!(第七期 最短路算法)
蓝桥杯上岸必背!!!(第八期 简单数论)
前言
喜欢的小伙伴可以关注我,关注寸铁,我们一起上岸4.8蓝桥杯!!!
内存转换
Byte:字节(B)
bit:位(b)
1 Byte = 8 bit
int = 4Byte=32bit
long = 8Byte=64bit
基于1024这个数进行换算
1TB=1024GB
1GB=1024MB
1MB=1024KB
1KB=1024B
1B=8b
真题
空间
问题描述:
小蓝准备用 256MB 的内存空间开一个数组,数组的每个元素都是 32 位二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问256MB 的空间可以存储多少个 32 位二进制整数?
分析
1个位等于1个bit(b),32个位等于32个bi
1个B等于8个b,32个位等于32/8=4个B
问题就转换为问:256MB可以换成多少个4个B
我们来换算一下:
256MB=256*1024KB=256*1024*1024B=268435456B
256MB总共有268435456个B,直接除以4即得答案。
答案:67108864
取数位
核心常用
while(x!=0){
int a=x%10;//a存的是取出的每一个数位
x/=10;
}
如果是比较一个数字中的两个数位的大小
不妨用:
int a=2023;
String s=String.valueOf(a);
int c=s.charAt(0);
int d=s.charAt(1);
if(c==d)return true;
如果是想直接取出数字:
需要转换一下:
int c=s.charAt(0)-‘0’;
int d=s.charAt(1)-‘0’;
转不转换看自己需要!
强烈建议看一下如下文章 👇 :
蓝桥杯上岸必刷!!!(日期专题+保姆级教学)
算法竞赛字符串常用操作总结!!!
结合食用更佳~
数位之和
int sum=0;
while(x!=0){
int a=x%10;//a存的是取出的每一个数位
x/=10;
sum+=a; //sum统计数位之和
}
数字取数位
int a=2023
2:2023/1000
0:2023/100%10
2:2023/10%10
3:2023%10
/:相当于删掉后面的0的总个数的数字
%:相当于保留/取出后面的数字
考试时候,忘记了怎么办?
不要慌,我们还有强大的计算器!!!
个位直接取模,这总是不会忘记的。
最高位直接除即可得
除最高位外,取出某个数,是用%10
中间的需要除多少再我们可以用计算器现推出来。
再%10即可。
以20463为例
先看最高位、个位
个位3:直接对10取模即得
最高位2:
直接除以10000即得最高位数2
分析规律:直接除以剔除掉最高位数,剩下的数位的10000
如20463得到2:把2剔除掉还剩0463四位,需要除10000(4个0)
再如2578487得到:把2剔除掉还剩578487六位,需要除1000000(6个0)
按照这个规律,可以继续处理剩余的位数。
0
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7EnUDy09-1691246451821)(https://cdn.acwing.com/media/article/image/2023/04/06/261358_bdc7fdb2d4-数位0.png)]
20463/1000可以得到20再%10便得到0
4
20463/100可以得到204再%10便得到4
6
20463/10可以得到2046再%10便得到6
可以再发现规律,/完后会保留我们想要的最后一位数,再%10即可得到答案!
时间取数位
详情见这篇 👇
蓝桥杯上岸必刷!!!(日期专题+保姆级教学)
学习完后,可以写一下这道题👇:
特殊年份
进制转换
真题
【问题描述】
九进制正整数 (2022), 转换成十进制等于多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
以此题为例:
梳理一下进制转换的一些知识点
M进制转10进制
必记公式:
(abcd)M p=M,s:表示的是数字的长度
a*p^s-1+b*p^s-2+c*p^s-3+d*p^s-4
具体应用如下 👇 :
(2022)9转换成10进制
非0的数字表示一个位置:对应的是二进制数中的位置
比如:
千位:2–>3
百位:0(0*任何数均为0,直接跳过)
十位:2–>1
个位:2–>0
又如:4568
千位:4–>3
百位:5–>2
十位:6–>1
个位:8–>0
回到本题:
写成公式:2*9^3+2*9^1+2*9^0=1478
直接用计算机算即可,当然用程序也可以。
分析一下公式:
M进制数转10进制:
首先,得出二进制数中每个数的位置p
再求出当前这一位M的p次方
最后乘上每个数的位数即可。
比如:
数字:(abcd)M
公式:
(abcd)M p=M,s:表示的是数字的长度
a*p^s-1+b*p^s-2+c*p^s-3+d*p^s-4
具体到本题:
(2022)9
2*9^3+2*9^1+2*9^0=1478
答案:1478
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QTZwpiBe-1691246451822)(https://cdn.acwing.com/media/article/image/2023/04/06/261358_978b47ecd4-进制.png)]
代码算:(数据比较大可以用代码算)
Accode(9进制换十进制)
import java.util.*;
public class Main{
public static void main(String []args) {
Scanner sc=new Scanner(System.in);
int x=2022;
int a=1;
int res=0;
while(x!=0) {
res+=(x%10)*a;
a=a*9;
x/=10;
}
System.out.println(res);
}
}
进而推广到一般情况:
Accode(M进制换十进制)
实际上是把位数取出来,再进行相乘
import java.util.*;
public class Main{
public static void main(String []args) {
Scanner sc=new Scanner(System.in);
int x=题目所给数字;
int a=1;
int res=0;
while(x!=0) {
res+=(x%10)*a;
a=a*M;
x/=10;
}
System.out.println(res);
}
}
十进制转M进制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I3ahZIGv-1691246451822)(https://cdn.acwing.com/media/article/image/2023/04/07/261358_6fc36dbfd4-十进制.png)]
十进制转B进制可以看y总这张公式
每次**/b
可以依次取出a0、a1、...ak-1
**
十进制转M进制(API)
返回的是字符串形式
转换为二进制:转换前的数据类型**.toBinaryString(i)**
转换为八进制:转换前的数据类型**.toOctalString(i)**
转换为十六进制:转换前的数据类型**.toHexString(i)**
转换为n进制: Integer.toString(a, n)
示例:
public class Main {
public static void main(String[] args) {
int a = 176;
System.out.println(a + "的二进制是:" + Integer.toBinaryString(a));
System.out.println(a + "的八进制是:" + Integer.toOctalString(a));
System.out.println(a + "的十六进制是:" + Integer.toHexString(a));
System.out.println(a + "的n进制是:" + Integer.toString(a, n));
}
}
由于时间关系,其他进制不在这一一赘述。
可以看这篇博客,比较详细全面: 👇