杭电oj编码2031
来源:互联网 发布:华为手机网络助手在哪? 编辑:程序博客网 时间:2024/05/16 13:01
问题描述:
输入一个十进制数N,将它转换成R进制数输出。
输入:
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。
输出:
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
样例输入:
7 2
23 12
-4 3
样例输出:
111
1B
-11
分析:
这道题需要用到从10进制转换成其他进制的方法。
1、使用整型数组存储,包括(10,11,12,13,114,15)
2、将负数转化为正数做处理。
3、倒序输出
代码:
#include<iostream>#include<stdio.h>#include<cmath>int main(){ int N, R; while (~scanf("%d %d", &N, &R)) { int num, i = 0, c[100000]; for (int num = abs(N); num != 0; ++i)//使用abs函数,用于取得数的绝对值 { c[i] = num % R;//将余数保存在整形数组中 num /= R;//将上次循环中的数据取整,并保留,用做下次循环时使用 } if (N < 0)//当输入的数是负数时,需要输出负号 printf("-"); for (int j = i - 1; j >= 0; --j)//因为整型数组中存储的余数中可能会有‘10’,‘11’,‘12’,‘13’,‘14’,‘15’,将其转换成对应的字符。 { if (c[j] == 10) printf("A"); else if (c[j] == 11) printf("B"); else if (c[j] == 12) printf("C"); else if (c[j] == 13) printf("D"); else if (c[j] == 14) printf("E"); else if (c[j] == 15) printf("F"); else printf("%d", c[j]); } printf("\n"); } return 0;}
0 0
- 杭电oj编码2031
- 杭电OJ编码1000
- 杭电OJ编码1001
- 杭电OJ编码1002
- 杭电OJ编码1994
- 杭电oj编码2014
- 杭电oj编码2013
- 杭电oj编码2012
- 杭电oj编码2011
- 杭电oj编码2015
- 杭电oj编码2016
- 杭电oj编码2018
- 杭电oj编码2019
- 杭电oj编码2020
- 杭电oj编码2010
- 杭电oj编码2009
- 杭电oj编码2021
- 杭电oj编码2022
- LOL 在这里就是菜…
- glGetError
- android上传图片到服务器
- Gabor算法
- Maven搭建SpringMVC+Hibernate项目详解
- 杭电oj编码2031
- oracle创建表空间
- 如何在桌面上显示自定义View
- Unable to start the daemon process--Could not reserve enough space for object heap
- 快来使用HTTPS吧
- hdu1069 Monkey and Banana(二维LIS)
- python 操作outlook
- 在未提供官方驱动的Windows平板上安装Win10且完美驱动的解决方案
- BZOJ 1588 [HNOI2002] 营业额统计