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

蓝桥杯练习日常|递归-进制转换

蓝桥云课760数的计算 

一、递归

题目:

我的解题代码: 

#include <iostream>
using namespace std;
int sum=0;
int main()
{
  // 请在此输入您的代码
  int n;
  cin>>n;
  int fun(int n);
  fun(n); 
  cout<<sum<<'\n';
  return 0;
}
//
void fun(int n){
  if(n==0){
   return ;
  }else
  for(int i=0;i<=n/2;i++){
    fun(i);
  }
  sum++;
}

注意:其中使用了dfs搜索 

二、进制转换

1、任意进制转十进制:

  • k进制(k>10)整数转化成十进制。把K进制的每一位数放进数组中。

  • 代码模板:res表示结果,k表示k进制转化为十进制,a【i】里边放的是任意进制的每一位数。
  • int res=0;//存放结果
    for(int i=1;i<=n;i++){
    res=res*k+a[i];
    }
    cout<<res<<'\n';
  • 原理:
  • 例题:  题目链接:蓝桥账户中心
  • 题目:
  • 解题代码:
    #include <iostream>
    using namespace std;
    int main()
    {
      // 请在此输入您的代码
      int a[]={2,0,2,1,10,11,12,13,14};
      //这个是十六进制的数
      //转化成十进制,使用模板
      int res=0,k=16;
      for(int i=0;i<8;i++){
        res=res*k+a[i];
      }
      cout<<res;
      return 0;
    }

2、十进制转换为其他进制:

  • 代码模板:
  • 十进制数x,
  • int x,i=0;//x是十进制数
    while(x){
    a[++i]=x%k,x=x/k;
    reverse(a+1,a+1+i);//翻转,使得高位在1的位置
    }
  • 原理:
  • 同样是这个公式,k表示要转化为k进制,x是公式的和。

任意进制转化成任意进制

题目:进制转换*

 

思路:

第一步,将字符串的每个字符转化成数字。 

第二步,先转化成十进制,再从十进制转化成其他进制!!!!

代码:

#include <bits/stdc++.h>
using namespace std;
char ch[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
int a[1000];
void fun(){
  int N,M;cin>>N>>M;
  string s;cin>>s;
  //第一步将其转化成数字
  for(int i=0;i<s.size();i++){
    if(s[i]>='0'&&s[i]<='9')a[i]=s[i]-'0';
    else if(s[i]>='A'&&s[i]<='Z')a[i]=s[i]-'A'+10;
  }
  //任意进制转化成十进制
  int x=0; //x存放转化成十进制的值
  for(int i=0;i<s.size();i++){
    x=x*N+a[i];
  }
  //十进制转化成任意进制
  
  string st;int index=0;
  while(x)st=st+ch[x%M],x=x/M;
  reverse(st.begin(),st.end());
  cout<<st<<'\n';
}


int main()
{
int T;cin>>T;
while(T--){
	fun();
}
}

一、十进制转二进制

#include <iostream>
#include <vector>
using namespace std;

vector<int> decimalToBinary(int num) {
    vector<int> binary;
    while (num > 0) {
        binary.push_back(num % 2);
        num = num / 2;
    }
    return binary;
}

二、十进制转十六进制

#include <iostream>
#include <string>
using namespace std;

string decimalToHexadecimal(int num) {
    string hexadecimal = "";
    char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
    while (num > 0) {
        int remainder = num % 16;
        hexadecimal = hexDigits[remainder] + hexadecimal;
        num = num / 16;
    }
    return hexadecimal;
}

三、二进制转十进制

#include <iostream>
#include <vector>
using namespace std;

int binaryToDecimal(vector<int> binary) {
    int decimal = 0;
    int power = 0;
    for (int i = binary.size() - 1; i >= 0; i--) {
        decimal += binary[i] * (1 << power);
        power++;
    }
    return decimal;
}

四、十六进制转十进制

#include <iostream>
#include <string>
using namespace std;

int hexadecimalToDecimal(string hexadecimal) {
    int decimal = 0;
    int power = 0;
    for (int i = hexadecimal.size() - 1; i >= 0; i--) {
        if (isdigit(hexadecimal[i])) {
            decimal += (hexadecimal[i] - '0') * (1 << (4 * power));
        } else {
            decimal += (hexadecimal[i] - 'A' + 10) * (1 << (4 * power));
        }
        power++;
    }
    return decimal;
}

可以根据实际需求调用这些函数来进行进制转换操作。


http://www.kler.cn/a/523128.html

相关文章:

  • 挂载mount
  • 中文输入法方案
  • Java基础知识总结(二十七)--Jdk5.0新特性:
  • MongoDB 数据库备份和恢复全攻略
  • 【JavaEE进阶】图书管理系统 - 壹
  • WPS数据分析000005
  • SpringBoot或SpringAI对接DeekSeek大模型
  • Baklib数字化内容管理打破传统束缚提升企业效能
  • 内置序列,专业版已破!
  • 【cran Archive R包的安装方式】
  • 开源先锋DeepSeek-V3 LLM 大语言模型本地调用,打造自己专属 AI 助手
  • 1688平台数据深度挖掘:商品详情与关键词搜索实战指南
  • 在线课堂小程序设计与实现(LW+源码+讲解)
  • linux通过deb包安装(命令模式)
  • 从synchronized到ReentrantLock_Java锁机制的演进与选择
  • waitpid使用
  • 新年祝词(原创)
  • Egg.js GraphQL 完整指南
  • Github 2025-01-28 Python开源项目日报 Top9
  • C语言/C++的函数——memset函数
  • 【2024年华为OD机试】 (C卷,200分)- 发广播(JavaScriptJava PythonC/C++)
  • 【愚公系列】《循序渐进Vue.js 3.x前端开发实践》022-定义组件
  • 基于STM32的智能语音控制灯光系统设计
  • tcp/ip协议中ip层协议,tcp/ip协议中ip协议属于
  • computed , watch 的妙用
  • stack 和 queue容器的介绍和使用