题目描述:
求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。 不同进制的表示符号为(0,1,…,9,a,b,…,f)或者(0,1,…,9,A,B,…,F)。
输入描述:
输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2 =< a,b <= 16。
数据可能存在包含前导零的情况。
输出描述:
可能有多组测试数据,对于每组数据,输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,…,9,A,B,…,F)。
样例输入:
15 Aab3 7
样例输出:
210306

解题思路: 分为两步:一将待转换的进制数转换成十进制数,再将该十进制数转换成要求的进制数。
其他进制数转换成十进制数: 利用一个变量c依次计算每个数位的权重,它的初始值为1,每经过一位就累乘进制数a,使表示权重的变量c依次等于1、a、a2a^2a2、a3a^3a3…;从低位到高位依次遍历各个数位上的数字,同时将其与当前位的权重(即变量c)相乘;最后依次累加所得到的积,即可得到由十进制表示的数。

#include<bits/stdc++.h>
using namespace std;  int main(){int a, b;char str[40];while(scanf("%d%s%d", &a, str, &b) != EOF) {int tmp = 0, lenth = strlen(str), c = 1;/*tmp为我们将要计算的a进制对应的十进制数,lenth为字符串长度方便从低位到高位遍历每个数位上的数,c为各个数位上的权重初始化为1,表示最低位数权重都是前一位权重的a倍*/for(int i=lenth-1; i>=0; i--){//从最低位到高位遍历每个数位上的数 int x;//计算该数位上的数字if(str[i]>='0' && str[i]<='9'){x = str[i] - '0';//当数字在0~9之间,计算其代表的数字 }else if(str[i]>='a' && str[i]<='z'){x = str[i] - 'a' + 10;//当字符为小写字母时,计算其代表的数字 } else{x = str[i] - 'A' + 10;//当字符为大写字母时,计算其代表的数字 }tmp += x*c;//累加该位数字与该数位权重的积c *= a;//计算下一位数位权重}char ans[40], size = 0;//用ans保存转换到b进制的各个数位数字do{int x = tmp % b; //计算该位数字ans[size++] = (x<10)? x+'0':x-10+'A';//将数字转换成字符tmp /= b; } while(tmp);for(int i=size-1; i>=0; i--){printf("%c", ans[i]);//输出 }cout << endl;}return 0;
}

本题在线测试入口

结束


进制转换 [2008年北京大学图形实验室计算机研究生机试真题]相关推荐

  1. 素数 [2008年北京航空航天大学计算机研究生机试真题]

    题目描述: 输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1. 输入描述: 输入有多组数据. 每组一行,输入 ...

  2. 题目1163:素数 2008年北京航空航天大学计算机研究生机试真题

    格式原因,所以先存储,再打印 #include <stdio.h> #include <math.h> bool judge(int n) {int i,j,k;int a[1 ...

  3. 2008年清华大学计算机研究生机试真题

    http://ac.jobdu.com/problem.php?pid=1080  进制转换 当然这个题目如果使用大数模板来做的话,也是可以AC的,话说我第一次就是用大数模板AC的,然后又改用了下面这 ...

  4. 2011年北京大学计算机研究生机试真题(dijkstra+优先队列)

    http://ac.jobdu.com/problem.php?pid=1162  I Wanna Go Home 方法一:普通的dijkstra /* 很明显的最短路,但关键是如何建图.可以看到,一 ...

  5. 2010年北京大学计算机研究生机试真题

    http://ac.jobdu.com/problem.php?pid=1149   子串计算 #include<iostream> #include<cstdio> #inc ...

  6. 又一版A+B [2008年浙江大学计算机及软件工程研究生机试真题]

    题目描述: 输入两个不超过整型定义的非负10进制整数A和B(<=2312^{31}231-1),输出A+B的m (1 < m <10)进制数. 输入描述: 输入格式:测试输入包含若干 ...

  7. 2008年浙江大学计算机及软件工程研究生机试真题

    http://ac.jobdu.com/problem.php?pid=1029魔咒词典 题目当中每个魔咒用一对括号[  ] 来包含,测试数据在一对括号当中会有空格,这个小问题导致一直是WA,应该首先 ...

  8. 计算机要点概述+交互方式+基本的dos命令+文本文件和字符集+进制转换+环境变量

    计算机要点概述+交互方式+基本的dos命令+文本文件和字符集+进制转换+环境变量 计算基本概念 计算机组成 计算机语言 计算机语言的发展 计算机语言的两种分类 两种转换时机 常用的计算机语言 前端后端 ...

  9. 夯实基础——P2084 进制转换

    题目链接:https://www.luogu.org/problem/P2084 P2084 进制转换 题目背景 无 题目描述 今天小明学会了进制转换,比如(10101)2 ,那么它的十进制表示的式子 ...

最新文章

  1. ORB-SLAM2从理论到代码实现(七):Tracking.cc程序详解(中)
  2. 【PHP-FPM】配置,优化性能
  3. SAP Cloud Platform上Fiori launchpad tile的读取原理
  4. P3980-[NOI2008]志愿者招募【费用流】
  5. 如何在React Native和Firebase中设置Google登录
  6. C# struct 装箱拆箱例子
  7. retinanet 部署_再谈RetinaNet
  8. 游戏中汉字显示的实现与技巧
  9. composer 介绍及安装
  10. 微信支付v2开发(6) 发货通知
  11. Eclipse安装中文语言包
  12. 小程序和H5真的有孰优孰劣吗?详解两者的适用场景
  13. LFS8.0完全安装搭建制作教程
  14. 红外热成像技术的应用与发展
  15. 图书管理系统需求规格说明文档目录_一个已经超越普通设计素材管理范畴的文档管理软件—Eagle...
  16. Linux学习之Kali制作简单的Windows的木马,创建后门
  17. 再见PDF提取收费!我用100行Python代码搞定!去你的收费!
  18. 计算机组成原理之概述篇(一)
  19. 如何从瘫痪windows系统里面找到原来的IP地址设置
  20. 如何进入/home/user/.wine

热门文章

  1. 和pbs的区别_少女针Ellanse易丽适和童颜针的区别,最全面解析
  2. @Intercepts-mybatis拦截器
  3. Semaphore1.8源码
  4. xargs 将标准输入转换成命令行参数
  5. 03-肯德基点餐:抽象工厂模式
  6. iPhone手机更换自定义铃声
  7. 项目“”受源代码管理,向源代码管理注册此项目时出错。。
  8. CURL 错误码 中文翻译
  9. WCF把书读薄(4)——事务编程与可靠会话
  10. 24个坏行为让你身体越来越丑