当前位置: 首页 > news >正文

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

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

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

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

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

目录

快速进制转换方法

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

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

实战题目

任意进制转换-NOIP真题

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

进制位数-蓝桥云课

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

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


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

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

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

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进制

示例说明 

  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进制),使用这个模板可实现任意进制对任意进制的转换

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
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 的所有整数,至少需要多少个二进制位?

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 在二进制中是几位数?

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 对应的十进制是多少?

答案提交

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

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。

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);
    }
}

相关文章:

  • Spring 注解解析
  • 如何实现具备自动重连与心跳检测的WebSocket客户端
  • lambda表达式案例分析
  • Vector底层结构和源码分析(JDK1.8)
  • 【不动产登记全解析】范围、内容与不予登记的情形
  • 思维链医疗编程方法论框架(Discuss V1版)
  • MySQL 8 设置允许远程连接(Windows环境)
  • Oracle 查询数据库对象的DDL语句
  • 解锁 AI 开发的无限可能:邀请您加入 coze-sharp 开源项目
  • antd的Form表单校验的方式有几种
  • 网络空间安全(29)漏洞扫描
  • undefined和null的区别 (新手小白级教程)
  • 第5关:猴子爬山
  • 航空动力系统适航标准要点手册
  • OpenRewrite配方之import语句的顺序——org.openrewrite.java.OrderImports
  • transformer bert 多头自注意力
  • element-plus中Autocomplete自动补全输入框组件的使用
  • 【Spring】详细剖析Spring程序
  • 多线程实现批量保存数据
  • PE,ELF,COFF
  • 怎么在手机上做网站/seo定义
  • 上海松江做网站建设/新冠咳嗽怎么办
  • 网站建设的计划书/百度站长工具网站
  • 网站备案上传照片几寸/天津百度网站快速优化
  • 软件公司网站建设/全网搜索指数查询
  • 做的漂亮的家居网站/关键词seo公司