进制转换
输入一个十进制数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
#include <bits/stdc++.h> using namespace std; int main() { int n,r; while (scanf("%d%d", &n, &r) != EOF) { stack<char>S; //定义一个栈 int flag = 1; //用来判断n是否为负 if (n < 0) { n=-n; flag=0; } while(n!=0) //进制转换 { int s = n % r; //取余 if (s>= 10) { S.push('A' + s - 10); //进栈 } else { S.push(s + '0'); } n=n/r; //除以进制数r } if (flag==0) putchar('-'); while(!S.empty()) //判断栈是否为空 { cout<<S.top(); //出栈 S.pop(); //删除出去的栈 } cout<<endl; } return 0; }
水题,用除法直接算