进制转换
Time Limit: 1000MS Memory limit: 65536K
题目描述
输入一个十进制数N,将它转换成R进制数输出。
输入
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。
输出
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
示例输入
7 2 23 12 -4 3
示例输出
111 1B -11
就因为0的时候的剪枝,让我挂了WA 2次,0的时候无法不断取余,不进入那个循环!导致不输出结果!
#include <iostream> #include <string> #include <stdio.h> #include <string.h> #include <map> #include <stack> #include <algorithm> #include <ctype.h> using namespace std; int main() { int n, r, dd, ff; int i, j; int flag; while(scanf("%d %d", &n, &r)!=EOF) { flag=0; stack<int>q; if(n==0) { printf("0 "); continue; } if(n<0) { flag=1; n=-n; } while(n!=0) { dd = n%r; q.push(dd); n/=r; } if(flag==1) { printf("-"); } while(!q.empty()) { ff=q.top(); q.pop(); if(ff>=10) { printf("%c", ff+55); } else { printf("%d", ff); } } printf(" "); } return 0; }