递归实现进制转换(C++版)

上次呢,我们留下了一道题,今天我们来一起看一看:

题目链接:https://www.cnblogs.com/gaozirong/p/10547434.html

这是我写的程序,大家可以对照参考一下(C++):

#include<bits/stdc++.h>
using namespace std;
long long n,x,m;
long long f(long long a,long long k)
{//快速幂求a^kif(k==0)return 1;if(k==1)return a%n;if(k%2==0)return f((a%n)*(a%n)%n,k/2)%n;else return (f((a%n)*(a%n)%n,k/2)*(a%n))%n;
}
int main()
{long long k;cin>>n>>m>>k>>x;cout<<(x%n+((m%n)*(f(10,k)%n)%n))%n;return 0;
}

今天我们来讲一讲进制,首先,进制是什么?

进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tally mark计数)。 对于任何一种进制---X进制,就表示每一位置上的数运算时都是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。

现在常用的是十进制、二进制、八进制和十六进制,今天我们一起来看一看进制转换。

如何转换?

就以十进制转换成二进制为例:

例如,十进制的115转换为二进制:(详见下图)

十进制转换成二进制运用的是短除法。如果x进制转换为y进制,就要先把x转换为十进制数,然后在用十进制数转换为y进制数。

参考代码:

参考代码分为几种不同的点,供你们参考:

//二进制转换成八进制:
#include<bits/stdc++.h>
using namespace std;
string num[]={"0","1","2","3","4","5","6","7"};
string f(string s)
{int sum=0,j=1;//j表示的是2的多少次幂 if(s.size()<=3)//这是边界,求出s对应的十进制数
    {for(int i=s.size()-1;i>=0;i--){sum+=(s[i]-'0')*j;j*=2; }return num[sum];}string s1=s.substr(s.size()-3,3);//截取最后三个字符string s2=s.substr(0,s.size()-3);//截取前面的部分return f(s2)+f(s1); 
}
int main()
{string s;cin>>s;cout<<f(s);return 0;
}
//十六进制转换成二进制:
#include<bits/stdc++.h>
using namespace std;
string num[]={"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"};
//num[i]表示的是十六进制数i对应的二进制数 
string f(string s)
{if(s.size()==1){if(s[0]>='0'&&s[0]<='9')//如果是数字,对应的二进制数 return num[s[0]-'0'];return num[s[0]-'A'+10];//处理字母 
    }string s1=s.substr(s.size()-1,1);string s2=s.substr(0,s.size()-1);return f(s2)+f(s1); 
}
int main()
{string s;cin>>s;string S=f(s);while(S[0]=='0')//去除前导0 S.erase(0,1);cout<<S;return 0;
}
//二进制转换成十六进制:
#include<bits/stdc++.h>
using namespace std;
string num[]={"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
string f(string str)
{if(str.size()<=4){int sum=0,i=1;for(int j=str.size()-1;j>=0;j--){sum+=(str[j]-'0')*i;i*=2;}return num[sum];}string s1=str.substr(0,str.size()-4);string s2=str.substr(str.size()-4,4);return f(s1)+f(s2);
}
int main()
{string str;cin>>str;cout<<f(str);return 0;
}
//八进制转换成二进制:
#include<bits/stdc++.h>
using namespace std;
string num[]={"000","001","010","011","100","101","110","111"}; 
//num[i] 表示的是i对应的的二进制数 
string f(string str)
{if(str.size()==1)return num[str[0]-'0'];string s1=str.substr(0,str.size()-1);string s2=str.substr(str.size()-1,1);return f(s1)+f(s2);
}
int main()
{string str;cin>>str;string S=f(str);while(S[0]=='0')//去除前导0 S.erase(0,1);cout<<S;return 0;
}

今天的进制转换和上期的快速幂一定要复习哦!

转载于:https://www.cnblogs.com/gaozirong/p/10548843.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449158.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决 mysql 插入数据报错: Cannot add or update a child row: a foreign key constraint fails

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 场景&#xff1a;我的情况是主表为用户 user 表&#xff0c;从表为职位 job 表&#xff0c;其中 job 表有一个外键为 user 表的主键。 …

犹太人从未透露的12个秘密(图)

中国人喜欢攒钱&#xff0c;西方人热衷花钱&#xff0c;只有犹太人精于赚钱。 他们认为&#xff1a;唯有运用智慧赚钱&#xff0c;才是真正的致富之道。他们的经商智慧风靡全球&#xff0c;造就了无数的商业巨子。本文通过解读犹太人精妙绝伦的经商之道&#xff0c;从人性、道…

vim文本编辑器的配置vimrc

在行底模式下对vim的设置只是临时有效&#xff0c;如果想长期有效需要把这些设置语句写入配置文件(~/.vimrc)中。 打开vim的配置&#xff1a;vim ~/.vimrc 进行编辑&#xff1a; " 显示行号 set number" tab键宽度 set tabstop4" 设置自动缩进 set autoindent…

IDEA 错误:找不到或无法加载主类

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 从昨天开始使用IDEA开始就一直在搭建java环境&#xff0c;许久没有使用过java&#xff0c;刚开始有些生疏&#xff0c;先建了一个最简单…

Android 第一篇

在Android的世界里以一只萌级小菜鸟的身份起飞&#xff0c;在后面的路途中不断的成长。转载于:https://www.cnblogs.com/ming-michelle/p/10558328.html

如何吸引财富呢?请做这六件事吧!

一&#xff1a;投资你的债务 有一则故事到处流传&#xff1a;当声名浪藉的威利被问到为什么要抢劫银行时&#xff0c;他回答道&#xff1a;“因为这里有钱。”威利可能是个恶棍&#xff0c;但不是个笨蛋。他选对了目标。不过如能够到银行里投资&#xff0c;而不是到这里抢劫&am…

vscode解决中文乱码

打开文件时出现乱码 文件->首选项->设置&#xff0c;然后在右边用户设置里打开settings.json &#xff0c;输入&#xff1a; “files.autoGuessEncoding”: true, CtrlS保存一下&#xff0c;就搞定了&#xff01; 没有做很大的修改&#xff0c;可以正常使用就行 {&qu…

Centos 7源码编译搭建Nginx

一、Nginx入门介绍 1. Nginx&#xff08;engine x&#xff09;&#xff1a;[ˈendʒɪnks] 2. Nginx 是 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的&#xff0c;第一个公开版发布于2014年10月4日 3. 主要功能 1&#xff09;HTTP 服务器&#xff08;包含动静分离…

数据备份、pymysql模块

----------mysql数据备份------------- #1. 物理备份&#xff1a; 直接复制数据库文件&#xff0c;适用于大型数据库环境。但不能恢复到异构系统中如Windows。 #2. 逻辑备份&#xff1a; 备份的是建表、建库、插入等操作所执行SQL语句&#xff0c;适用于中小型数据库&#xff0…

优雅的找出ArrayList中重复的元素

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 方法1 代码&#xff1a; public class Main { public static void main(String[] args){ List<String> list new ArrayList&…

全球通吃的九大黄金专业

出国留学的同学在选专业时尤其摇摆不定&#xff0c;选择时需要根据以后的就业发展来挑选适合自己的专业。专业选择得当与否&#xff0c;决定着留学生回国发展是否顺利&#xff0c;决定着巨额投资是否物有所值&#xff0c;以下九类比较有发展潜力的黄金留学专业&#xff0c;供大…

C语言里最基础的关键字

内建类型&#xff1a; void、char、short、int、long、float、double 自建类型&#xff1a; struct、union、enum、sizeof 类型限定符&#xff1a; auto、const、static、volatile、register、extern、typedef、signed、unsigned 分支&#xff1a; if、else、switch、case、def…

mysql 行转列 (结果集以坐标显示)

create table capacity(type int ,numbers int ,monthst INT ); select type, sum(case monthst when 1 then numbers else 0 end ) 一月, sum(case monthst when 2 then numbers else 0 end ) 二月, sum(case monthst when 3 then numbers else 0 end ) 三月, sum(case months…

(五)springcloud微服务分布式云架构 - 云架构代码结构构建

上一篇介绍了《整合spring cloud云服务架构 - 企业分布式微服务云架构图》&#xff0c;本篇我们根据架构图进行代码的构建。根据微服务化设计思想&#xff0c;结合spring cloud一些优秀的项目&#xff0c;如服务发现、治理、配置化管理、路由负载、安全控制等优秀解决方案&…

FastJson 中 jsonArray 转换成 list 集合的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 今天在写代码时候&#xff0c;遇到了需要将json文本改成jsonobject对象&#xff0c;然后将jsonobject对象转换成jsonArray数组&#xff…

信用卡使用十年的心得体会(图)

从第一张信用卡开卡以来&#xff0c;用卡也十多年了。一共用过三家银行的信用卡&#xff0c;分别是&#xff1a;招商银行、建设银行和交通银行。 谈不上用卡达人&#xff0c;只是将自己这十多年的使用体会&#xff0c;分享给大家吧~ 1、可按自己喜好设置还款日期——第一次…

linux命令编译C语言程序

C语言简介&#xff1a; BCPL->newB->C->UNIX->Linux->gcc C语言专门编写操作系统的语言&#xff0c;所以天生适合对硬件编程&#xff0c;也以运行速度快著称&#xff0c;也非常适合实现数据结构和算法。 由于出现时间过早&#xff0c;有很多缺陷&#xff0c;也…

PHP中插件机制的一种实现方案

插件&#xff0c;亦即Plug-in&#xff0c;是指一类特定的功能模块&#xff08;通常由第三方开发者实现&#xff09;&#xff0c;它的特点是&#xff1a;当你需要它的时候激活它&#xff0c;不需要它的时候禁用/删除它&#xff1b;且无 论是激活还是禁用都不影响系统核心模块的运…

python模块学习之glob模块

glob模块 功能描述&#xff1a;glob模块可以使用Unix shell风格的通配符匹配符合特定格式的文件和文件夹&#xff0c;跟windows的文件搜索功能差不多。glob模块并非调用一个子shell实现搜索功能&#xff0c;而是在内部调用了os.listdir()和fnmatch.fnmatch()。查看我之前写的fn…

根据一个属性,剔除 Json 中重复元素(删除 JSON 中重复的部分)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 [ {"data" : {"code" : "044","post" : "xxx领导", "email" : "…