蓝桥的进制转换题型以及自己总结进制转换模板

本文介绍了进制转换的基础方法,如将任意数转换为不同进制,以及字符串转换为整型的模板。特别提到了蓝桥oj上的题目,包括9进制转10进制和年号字符串的处理,还提及了`itoa`函数的使用和注意事项。
摘要由CSDN通过智能技术生成

今天练习了一些进制转换的题型,最经典的还是把一个数转换到相对应进制的数

然后还有一些进制转换会跟字母相关。比如说蓝桥oj上面的年号字串

在做的时候我还发现了一个如果这个数是某进制转换过后的值,我们想得到转换之前的值也有相关的模板我找到的

以前只是单纯的知道,他可以把字符串转换成整型。今天也是收获的一天。

下面来看看题

最经典的一个模板

//这个是把一个数转换成好多进制之后的数
//如果是转换成10进制的数
#include <bits/stdc++.h>
//以前遇见一道题找的是2022的9进制转换成多少进制数
using namespace std;
int main(){
  int a[10000000]={0};
  int n;cin>>n;//这个是转换的数
  int k=0;
  while(n){
    int cnt=n%2;//这里%多少看你想转换成多少进制的数
    a[k]=cnt;
    k++;//这点在把数组下标从0到1,然后1到2
    n/=2;
  }
  for(int i=k-1;i>=0;--i){
    cout<<a[i];
  }
  return 0;
}

然后我们来看看下面这个公式有些人肯定知道,字符串转换成整型

ans=ans*9+s[i]-'0';

9是要转换的进制,也可以改成其他的

下面我们来看看相关的题:  蓝桥省赛九进制转十进制

我不知道有没有小白跟我先开始一样,就在想9进制不就是在10进制以内吗??为什么还要转换

还有就是题目要看清楚,好好好。我们继续,我跟大家补充一个知识点

itoa这个函数可以把一个数转换成你想要转换的进制数

itoa(转换的数字,转换的字符数组,转换的进制)

转换的字符数组,记住只能是字符数组,但是在蓝桥oj运行会报错,这个函数的问题,编译器上面确不会出现这个问题,本人亲试有效

但是还是最好不要使用这个函数。我们继续讲解下面跟字母相关的进制转换

蓝桥的年号字符串这个题,下面是题目以及思路和模板

#include<bits/stdc++.h>
using namespace std;
using ll=long long ;
char a[26]= {'A', 'B', 'C', 'D', 'E', 'F', 'G',
'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};;
int main()
{
    int n;
    cin >> n;
    string s = "";
    while(n){
        n--;// 因为26进制是 0 - 25,而题目中表示是 1 - 26,所以每一位都减1
        int m = n % 26;
        s += a[m];
        n /= 26;
    }
    int sum=(int)s.size();
    for(int i=sum-1;i>=0;--i){
      cout<<s[i];
    }
    return 0;
}

如果嫌弃麻烦可以使用reverse调转一下

在写的时候,我们要注意里面的细节,就比如上面的n--

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值