蓝桥杯进制问题秒破解法|冲击省一题单(二)

因为进制问题在蓝桥杯中几乎是必考的题目

所以此文为进制转换问题专项篇,带你快速解决所有进制转换问题。

本文不仅包含了快速进行进制转换的方法,结合经典的例题带你秒破进制转换类题型

目标冲击蓝桥杯省一国一,团体程序天梯赛个人国三、XCPC区域赛铜/银奖

目录

快速进制转换方法

利用数字类进行固定进制转换

数字类实现任意进制随意转换

实战题目

任意进制转换-NOIP真题

二进制表示-21蓝桥杯模拟赛

进制位数-蓝桥云课

进制-2022蓝桥杯省模拟赛真题

rgb颜色转十六进制颜色-蓝桥云课


一、利用数字类进行固定进制转换

下面展示的是Integer也就是int类型的用法。Long类用法跟Integer一样,Double只能使用toHexString(10进制转16进制)

缺点:只能进行几个固定的进制转换

java 复制代码
Scanner sc=new Scanner(System.in);
int a=15;
System.out.println(Integer.toBinaryString(a));//10进制转2进制
System.out.println(Integer.toHexString(a));//10进制转16进制
System.out.println(Integer.toOctalString(a));//10进制转8进制

运行结果

二、数字类实现任意进制随意转换

利用Integer.parseInt(需要转换的字符串 ,字符串的进制);//将任意进制转化成10进制

和Integer.toString(第一个参数是需要转换的数,第二个参数是进制)

可以实现任意进制的转换,输出的结果是字符串类型

下面就是将10进制的15转化为8进制

示例说明

java 复制代码
  System.out.println(Integer.toString(15,8));//将15转化为8进制
  System.out.println(Integer.toString(15,2));//将15转化为2进制

   String binary = "101101"; // 二进制字符串
   int decimal = Integer.parseInt(binary 2); // 二进制转化十进制

进制转换示例(2进制转9进制),使用这个模板可实现任意进制对任意进制的转换

java 复制代码
String binary = "101101"; // 二进制字符串
int decimal = Integer.parseInt(binary, 2); // 先将二进制转为十进制
String nonary = Integer.toString(decimal, 9); // 再将十进制转换为九进制
System.out.println("二进制数 " + binary + " 转换为九进制数为 " + nonary);

三、实战

3.1任意进制转换

进制转换 - NOIP真题

题目描述

给定一个 N 进制数 S,请你将它转换为 M 进制。

输入描述

第一行为一个整数 T,表示测试数据数量。 (1≤T≤105)

每个测试用例包含两行,第一行包含两个整数 N,M。

第二行输入一个字符串 S,表示 N 进制数。

数据范围保证:2≤N,M≤16,若 N≥10N≥10,则用 A∼F 表示字码 10∼15。保证 S 对应的十进制数的位数不超过 10。

输出描述

输出共 T 行,每行表示一组数据的答案。

输入样例

复制代码
2
2 10 
10101 
11 2
1793A5068

输出样例

复制代码
21
10101111001010100111010101011
java 复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int t=scan.nextInt();
        while(t-->0){
            int n=scan.nextInt();
            int m=scan.nextInt();
            String s= scan.next();
            int tmp=Integer.parseInt(s,n);//先将n进制的s转化为10进制
            String ans=Integer.toString(tmp,m);//再将tmp的结果转化为m进制
            System.out.println(ans.toUpperCase());
        }

        scan.close();
    }
}

3.2二进制表示

二进制表示 - 21蓝桥杯模拟赛

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小明要用二进制来表示 11 到 1000010000 的所有整数,要求不同的整数用不同的二进制数表示,请问,为了表示 11 到 1000010000 的所有整数,至少需要多少个二进制位?

java 复制代码
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print(Integer.toString(10000,2).length());
        scan.close();
    }
}

3.3进制位数

进制位数 -蓝桥云课

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

问题描述

十进制整数 22 在十进制中是 11 位数,在二进制中对应 1010 ,是 22 位数。

十进制整数 2222 在十进制中是 22 位数,在二进制中对应 1011010110 ,是 55 位数。

请问十进制整数 20222022 在二进制中是几位数?

java 复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println(Integer.toString(2022,2).length());
        scan.close();
    }
}

3.4进制

进制---2022蓝桥杯省模拟赛真题

问题描述

请问十六进制数 2021ABCD 对应的十进制是多少?

答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

java 复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println(Integer.parseInt("2021ABCD",16));
        scan.close();
    }
}

3.5rgb颜色转十六进制颜色

rgb颜色转十六进制颜色 - 蓝桥云课

问题描述

小布最近在学设计,需要用到很多设计软件。但是小布发现有有些软件使用 rgb 三原色来表示颜色,而有些软件使用十六进制来表示颜色,于是小布决定请你来帮他设计一个程序来实现 rgb 颜色到十六进制颜色的转换。

注:rgb 颜色 [red、green、blue]这里red,green,blue 都是十进制数,只要把它们分别转换成十六进制数并且保留两位,然后再按顺序组合在一起并在头部添加"#"就得到了十六进制的颜色值。

例如:有一个 rgb 颜色 [25,78,90];25 ,78 ,90 的十六进制分别表示为 19 , 4E , 5A ,故该颜色的十六进制表示为 #194E5A。

输入格式

输入共 1 行,包含三个正整数 r,g,b 表示颜色的 rgb 表示法,使用空格分隔。

输出格式

输出共 1 行,包含一个字符串,表示颜色的十六进制表示法。

样例输入

复制代码
25 78 90

样例输出

复制代码
#194E5A

评测数据规模

对于所有评测数据,0≤r,g,b≤255。

java 复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //注意补0,不然无法ac
        int r = scan.nextInt();
        int g = scan.nextInt();
        int b = scan.nextInt();
        String ans="#";
        String tmp=Integer.toHexString(r).toUpperCase();
        ans+=tmp.length()<2?0+tmp:tmp;
        tmp=Integer.toHexString(g).toUpperCase();
        ans+=tmp.length()<2?0+tmp:tmp;
        tmp=Integer.toHexString(b).toUpperCase();
        ans+=tmp.length()<2?0+tmp:tmp;
        System.out.println(ans);
    }
}
相关推荐
打鱼又晒网4 分钟前
数据类型:List
数据结构·list
醉殇姒若梦遗年5 分钟前
怎么用idea打jar包
java·intellij-idea·jar
林九生9 分钟前
【Docker】Docker环境下快速部署Ollama与Open-WebUI:详细指南
java·docker·eureka
java程序员CC9 分钟前
记录为什么LIst数组“增删慢“,LinkedList链表“查改快“?
数据结构·链表·list
Aric_Jones1 小时前
lua入门语法,包含安装,注释,变量,循环等
java·开发语言·git·elasticsearch·junit·lua
Akiiiira1 小时前
【日撸 Java 三百行】Day 12(顺序表(二))
java·开发语言
AndrewHZ1 小时前
【图像处理基石】什么是油画感?
图像处理·人工智能·算法·图像压缩·视频处理·超分辨率·去噪算法
.格子衫.1 小时前
015枚举之滑动窗口——算法备赛
数据结构·算法
J先生x2 小时前
【IP101】图像处理进阶:从直方图均衡化到伽马变换,全面掌握图像增强技术
图像处理·人工智能·学习·算法·计算机视觉
ErikTse_3 小时前
【官方题解】StarryCoding 入门教育赛 2 | acm | 蓝桥杯 | 新手入门
职场和发展·蓝桥杯