首页 > 编程语言 >C++U6-09 - 数学专题(二)各种进制知识

C++U6-09 - 数学专题(二)各种进制知识

时间:2024-03-23 16:45:56浏览次数:37  
标签:09 进制 二进制 ll U6 C++ int ans 十进制

学习目标

 进制

 

 二进制转十进制

 二进制

 代码

 十进制转二进制

代码

 十进制转二进制小数方式,转其他进制同理

 二进制转八进制方法二

 八进制转二进制方法二

二进制转十六进制方法二

 代码

 代码

 十六进制转换成二进制

 n进制转十进制小数部分

 

 练习

[【进制转换】p进制转十进制]

 

【算法分析】
由于数字 n 可能包含 A∼F 的字符,所以选择以字符串的方式读入 n,然后进行码权积累和。

【参考代码】
#include<bits/stdc++.h>
using namespace std;

#define ll long long  //宏定义
int decode(char c) {
    if (c <= '9') return c - '0';
    return c - 'A' + 10;
}
int main() {
    int p;
    cin >> p;
    string s;
    cin >> s;
    ll ans = 0, power = 1;
    for (int i = s.length() - 1; i >= 0; i--) {
        ans += decode(s[i]) * power;
        power *= p;
    }
    cout << ans;
    return 0;
}
View Code

[【进制转换】十进制转q进制]

 

【算法分析】
除 q 取余,逆序排列,不过要注意大于 9 的数字要转换成大写字母。

【参考代码】
#include<bits/stdc++.h>
using namespace std;

char code(int x) {
    if (x < 10) return x + '0';
    return x - 10 + 'A';
}
int main() {
    int n, q;
    cin >> n >> q;
    string ans;
    do {
        ans += code(n % q);
        n /= q;

    } while (n);
    reverse(ans.begin(), ans.end());
    cout << ans;
    return 0;
}
View Code

[【进制转换】数列]

 

 

【算法分析】
分析题目可以发现,将 n 看成是二进制数,对于其第 i 位,如果这一位是 1 则答案需要加上 k 
i
 。

【参考代码】
#include<bits/stdc++.h>
using namespace std;
#define ll long long

ll powk[19];
int main() {
    powk[0] = 1;
    ll k, n;
    cin >> k >> n;
    for (int i = 1; i <= 11; i++) powk[i] = powk[i - 1] * k;
    ll ans = 0;
    for (int i = 0; i <= 11; i++) {
        if (n >> i & 1) {
            ans += powk[i];
        }
    }
    cout << ans;
    return 0;
}
View Code

 

 

本节课作业:

链接:https://pan.baidu.com/s/138FdCET3xeIw0H_aOOQwNg?pwd=3ipm
提取码:3ipm

 

标签:09,进制,二进制,ll,U6,C++,int,ans,十进制
From: https://www.cnblogs.com/jayxuan/p/18091281

相关文章

  • 2099.整除的尾数
    importjava.util.LinkedHashMap;importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);while(true){LinkedHashMap<String,Integer>hashMap=newL......
  • c++解耦:Factory Method
    讨论C++语言中如何将通用逻辑与使用到的频繁变化的具体类型解耦。假设存在以下设计:/*==================================================================*/#include<iostream>classCore{public:~Core(){}public:voidsolve(){std::cout<<"Cor......
  • 【LeetCode 509 】斐波那契数
    题目描述原题链接:LeetCode.0509斐波那契数解题思路题目直接给出了公式,朴素解法可以直接用\(O(n)\)复杂度求出答案,可以看做是递归或动态规划的入门题;这里重点作为模板题来介绍矩阵快速幂技巧,讲一下\(O(log_2n)\)复杂度的解法:递推公式\(F(n)=F(n-1)+F(n-2)\),转换为矩......
  • 【华为OD】2024年C卷真题集:最新的真题集题库 C/C++/Java/python/JavaScript
    2024年C卷真题题集题库,有2种分数的题目列表,分别是100分的列表、200分的列表需要订阅请看链接:C卷100分真题集质量分:94价格:39.9元C卷200分真题集质量分:94价格:99.9元从2023年11月开始,华为OD题目切换到C卷,基本上大概率会使用半年左右,要在2024年5月之前把这些题目都好好练习一下......
  • Qt/C++通用跨平台Onvif工具/支持海康大华宇视华为天地伟业等/云台控制/预置位管理/工
    一、前言在安防视频监控行业,Onvif作为国际标准,几乎主要的厂商都支持,不仅包含了国内的厂商,也包括主要的国际厂商,由于有了这个标准的存在,使得不同设备不同安防平台之间,能够接入各个厂家的硬件设备,互通有无,你中有我我中有你,实现良性竞争。ONVIF是一个全球性的开放式行业协议,其目标是......
  • 26.C++ STL常用容器—deque
    如果想单独一对一辅导学习C++、Java、Python编程语言的可以加微信咨询3.3deque容器3.3.1deque容器基本概念功能:双端数组,可以对头端进行插入删除操作deque与vector区别:vector对于头部的插入删除效率低,数据量越大,效率越低deque相对而言,对头部的插入删除速度回比v......
  • C++结构体内幕揭秘:sizeof之谜与内存布局探秘
     概述:C++结构体的`sizeof`不总是等于每个成员的`sizeof`之和,因为对齐和填充影响了内存布局。未对齐的结构体可能存在间隙,而对齐的结构体会插入填充以保持对齐。通过示例展示了结构体的内存对齐和填充,以及如何使用模板元编程打印结构体成员的偏移量,深入理解内存布局。在C++中,......
  • 2024届 C++ 刷题 笔试强训 Day 04
    选择题01有以下程序#include<iostream>#include<cstdio>usingnamespacestd;intmain(){intm=0123,n=123;printf("%o%o\n",m,n);return0;}程序运行后的输出结果是()A01230173B0123173C123173D173173题目解析:intm=......
  • 09 事务和连接池
    文章目录properties文件连接池service层实现类dao层实现类dao层实现类连接池类:创建线程池静态常量,用于放连接。创建Properties静态常量,用于解析properties文件静态代码块中,解析properties文件,将解析结果用于创建连接池连接方法:用线程获取连接,若没有,从连接池......
  • 深入理解 C++ 语法:从基础知识到高级应用
    C++语法让我们将以下代码分解以更好地理解它:示例#include<iostream>usingnamespacestd;intmain(){cout<<"HelloWorld!";return0;}示例解释第1行:#include<iostream>是一个头文件库,它让我们可以使用输入和输出对象,比如cout(在第5行使用)。头文件为......