hdu ---2031做题笔记(c++)
2016-10-13 11:49
239 查看
进制转换
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 42122 Accepted Submission(s): 23085
[align=left]Problem Description[/align]
输入一个十进制数N,将它转换成R进制数输出。
[align=left]Input[/align]
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。
[align=left]Output[/align]
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
[align=left]Sample Input[/align]
7 2
23 12
-4 3
[align=left]Sample Output[/align]
111
1B
-11
[align=left]Author[/align]
lcy
进制转换
#include <iostream> using namespace std; void detom(int a, int*ma, int m)//进制转换函数(a为输入的数,m为进制位,ma[]储存转换后的值) { int i = 0; while (a) { ma[i++] = a%m; a /= m; } } int main() { int n, r,i; int ma[40]; while (cin >> n >> r) { int flag = 0; memset(ma, 0, sizeof(ma));//因为int型无法用strlen,所以只能用填充0来确定数组经过运算后的实际长度 if (n < 0) { flag = 1; n *= -1; } detom(n, ma, r); i = 39; while (ma[i] == 0) i--; if (i < 0) cout << endl; else { if (flag) cout << "-"; while (i >= 0) { if (ma[i] < 10) { cout << ma[i]; } else { cout << (char)(ma[i] - 10 + 'A'); } i--; } cout << endl; } } return 0; }
相关文章推荐
- hdu ---2032做题笔记(c++)
- hdu ---2000做题笔记(c++)
- hdu ---2023做题笔记(c++)
- hdu ---2022做题笔记(c++)
- hdu ---2033做题笔记(c++)
- hdu ---2029做题笔记(c++)
- hdu ---2027做题笔记(c++)
- hdu ---2001做题笔记(c++)
- hdu ---2006做题笔记(c++)
- hdu ---2005做题笔记(c++)
- hdu ---2010做题笔记(c++)
- hdu ---2035做题笔记(c++)
- hdu ---2004做题笔记(c++)
- hdu ---2008做题笔记(c++)
- hdu ---2028做题笔记(c++)
- hdu ---2011做题笔记(c++)
- hdu ---2007做题笔记(c++)
- hdu ---2030做题笔记(c++)
- hdu ---2025做题笔记(c++)
- hdu ---2002做题笔记(c++)