问题 B: 数制转换
来源:互联网 发布:akg k309 知乎 编辑:程序博客网 时间:2024/06/11 06:47
题目描述
求任意两个不同进制非负整数的转换(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)。
样例输入
4 123 10
样例输出
27
提示
用字符串存储和表示不同进制的数。
#include <stdio.h>#include <string.h>#include <stdlib.h>int main(){ int m,b,n; while(scanf("%d %d %d",&m,&b,&n) != EOF){ int y = 0,product = 1; while(b != 0){ y += (b % 10) * product; b /= 10; product *= m; } char c[40]; itoa(y,c,n); int num = strlen(c); for(int i = 0;i < num;i++){ if(c[i]>='a'&&c[i] <='f'){ c[i] = c[i] - 32; } printf("%c",c[i]); } printf("\n"); } return 0;}
#include <stdio.h>#include <string.h>int main(){ int m,b,n; while(scanf("%d %d %d",&m,&b,&n) != EOF){ int y = 0,product = 1; while(b != 0){ y += (b % 10) * product; b /= 10; product *= m; } char z[40]; int num = 0; do{ if(y % n < 10){ z[num++] = y % n + '0'; }else{ z[num++] = (y % n - 10) + 'A'; } y = y / n; }while(y != 0); for(int i = num - 1;i >= 0;i--){ printf("%c",z[i]); } printf("\n"); } return 0;}
阅读全文
0 0
- 问题 B: 数制转换
- 问题 B: 数制转换
- 数制转换问题:skew
- 数制转换问题
- 栈解决数制转换问题
- 数制转换问题:确定进制
- 数制转换问题(顺序栈)
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 数制转换
- 【TensorFlow】TensorFlow实现 AlexNet Mnist手写数据集
- 什么叫持久化? 为什么持久化?
- TP3.2_MVC
- 简单分析下SPring MVC和Asp.net MVC的区别和异同点
- 解析tpshop笛卡尔积
- 问题 B: 数制转换
- 缩写
- keras线性回归拟合直线
- SSH框架学习之Struts2(1):Hello World
- Ajax异步请求-校验用户名的唯一性
- 迭代求子图同构
- Linux基础命令与常用目录
- maven 学习
- CSS变量