首页 > 其他分享 >洛谷题单指南-数学基础问题-P1143 进制转换

洛谷题单指南-数学基础问题-P1143 进制转换

时间:2024-04-07 09:33:07浏览次数:25  
标签:10 res 进制 int 洛谷题 P1143 ans dec

原题链接:https://www.luogu.com.cn/problem/P1143

题意解读:进制转换的模版题,n进制转10进制,10进制转m进制。

解题思路:

1、对于n进制数转10进制,如abcd转10进制,根据定义是a*n^3 + b*n^2 + c*n + d,在程序中迭代处理:

for(int i = 0; i < s.length(); i++) dec = dec * n + s[i]

需要注意的是,要把每一个字符转成整数再计算,'0'~'9'直接转为0~9,'A'~'F'转为10~15

2、对于10进制整数转m进制,采用除m取余法,注意余数要逆序输出,10-15要输出'A'~'F'

100分代码:

#include <bits/stdc++.h>
using namespace std;

int n, m;
string a;

int getnum(char c)
{
    int res = 0;
    if(c >= '0' && c <= '9') res = c - '0';
    if(c >= 'A' && c <= 'F') res = c - 'A' + 10;
    return res;
}

char getchar(int x)
{
    char res = '0';
    if(x >= 0 && x <= 9) res = x + '0';
    if(x >= 10) res = x - 10 + 'A';
    return res;
}

int main()
{
    cin >> n >> a >> m;

    //先将n进制转10进制
    int dec = 0;
    for(int i = 0; i < a.length(); i++)
    {
        dec = dec * n + getnum(a[i]); 
    }

    //再将十进制转m进制
    vector<int> ans;
    while(dec)
    {
        int r = dec % m;
        ans.push_back(r);
        dec = dec / m;
    }
    for(int i = ans.size() - 1; i >= 0; i--) cout << getchar(ans[i]);
    return 0;
}

 

标签:10,res,进制,int,洛谷题,P1143,ans,dec
From: https://www.cnblogs.com/jcwy/p/18118420

相关文章

  • 洛谷题单指南-图的基本应用-P1983 [NOIP2013 普及组] 车站分级
    原题链接:https://www.luogu.com.cn/problem/P1983题意解读:由于“如果这趟车次停靠了火车站x,则始发站、终点站之间所有级别大于等于火车站x的都必须停靠”。因此,在始发站和终点站之间,能停靠的车站都是级别较高的,没有停靠的车站都是级别较低的,计算最少有多少个不同级别。解题思路:......
  • Qt中char数组转16进制字符
    Tcp传入的16进制转16进制字符关键点:char、QByteArray::toHex()、QByteArray::fromRawData()知识点补充char在32bit或64bit系统中占一个1Bytechar中实际存储的是数字,当存在字符时,会把字符转为ASCLL码中对应的数组,存储进内存中char占1Byte,即4bit,而一个16进制是2的4次方即需......
  • 二进制和位运算
    1.无符号:int32位可以表示0~2^32-1位数。2.有符号:负数占1/2,正数和0占1/2首位为0表示非负。首位为1表示负数,后面是数值位。-1表示:先看正数:0001为1,减1——>0000表示0,每一位取反——>1111。-2表示:先看正数:0010,减1(向高位借位)——>0001表示1,取反——>1110。-8:1110,减1......
  • 牛客 HJ5进制转换
    暴力匹配求解:java字符与整型之间的转换:char-'0'与(char)int,字符串与整型转换:String.valueOf(int)与Integer.parseInt(str)importjava.util.Scanner;//注意类名必须为Main,不要有任何packagexxx信息publicclassMain{publicstaticvoidmain(String[]args)......
  • 常见的进制和进制的转换
    目录1.常见的进制1.1 二进制1.2 八进制1.3十进制1.4十六进制2.进制间转换2.1二进制和八进制2.2二进制和十进制2.3二进制和十六进制2.4八进制和十进制2.5八进制和十六进制2.6十进制和十六进制1.常见的进制在计算机中常见的进制有:二进制,八进制,十进制和十六......
  • 如何把一个十进制数转化为一个二进制数
    起因Miqa在改愤怒的小鸟,WA了两个点,尝试画图未遂,于是开调,但是想直观的看到二进制数,所以有了这个工具。#include<bits/stdc++.h>usingnamespacestd;inlinevoidtwice(longlongx){ stack<int>num; while(x!=0) { if(x&1)num.push(1); elsenum.push(0); x>>=1; ......
  • ctfshow--web9 md5二进制格加密的绕过
    dirsearch扫到robots文件查看一下发现有个index.phps文件访问这个index.phps,可以下载下来我们来审计一下这里的代码<?php$flag=""; $password=$_POST['password']; if(strlen($password)>10){ die("passworderror"); } $sql="select*from......
  • C语言02-常量、二进制、数据类型
    第4章常量1.常量特点程序运行时,其值不能改变的量,即为常量。习惯上常量名使用大写,方便与变量区分。2.常量分类​ **字面量常量**:直接使用的常量,不需要定义或声明,包括整数常量、浮点数常量、字符常量。注:有1,2,3等 ——顾名思义,就是数字整数 1.2,1.3,1.4等 ——也就......
  • 洛谷题单指南-图的基本应用-P1347 排序
    原题链接:https://www.luogu.com.cn/problem/P1347题意解读:在给出多对关系字母的比较关系之后,判断能否确定所有字母的顺序。解题思路:对字母的关系建立图,如A<B建立A指向B的一条边。如果在拓扑排序过程中,每次寻找入度为0的点只有一个,且最终可以形成拓扑序,则可以确定所有字母的顺......
  • 洛谷题单指南-图的基本应用-P1363 幻象迷宫
    原题链接:题意解读:迷宫可以无限扩展,对第一个样例进行模拟,扩展4块的示意图:从起点S,沿着红色虚线,是可以无限走下去的,要判断是否能够无限走下去。解题思路:直观上,会考虑把迷宫复制多块,但是会面临2个问题:1、内存可能爆掉2、如何有效判断可以无限走下去?只考虑竖向或者横向连通是不......