SDUT 1252 进制转换
Posted jkxsz2333
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SDUT 1252 进制转换相关的知识,希望对你有一定的参考价值。
进制转换
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
输入一个十进制数N,将它转换成R进制数输出。
Input
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R != 10)。
Output
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
Sample Input
7 2 23 12 -4 3
Sample Output
111 1B -11
提示:本题思路和上题几乎一样,多了个负数操作,多了个10以上进制的操作,10以上进制操作只需将数字转化为字符使之进栈即可,负数只需提前输出负号将其按正数处理即可。
代码实现如下(g++):
#include<bits/stdc++.h> using namespace std; int main() { int n,r; while(cin>>n>>r) { stack<char>s; if(n==0) { cout<<"0"<<endl;//0的任何进制都是0 continue; } else if(n<0) { cout<<"-"; n*=-1;//如果n是负数,将其变为正数同正数处理 } int t; while(n) { t=n%r; if(t<10) { t+=‘0‘; s.push(t); } else { t=t+‘A‘-10; s.push(t); } n/=r; } while(!s.empty()) { cout<<s.top(); s.pop(); } cout<<endl; } return 0; } /*************************************************** Result: Accepted Take time: 0ms Take Memory: 196KB ****************************************************/
以上是关于SDUT 1252 进制转换的主要内容,如果未能解决你的问题,请参考以下文章