您的位置:首页 > 其它

【HDOJ】2031 任意进制转换

2018-02-16 21:23 246 查看
思路1-10进制一组  11-16一组要注意数字小于零时 求余数时余数都为负数 所以在开始时就要把它化为正数 最后再输出负号
#include<iostream>#include<algorithm>#include<string>#include<cctype>using namespace std;int main(){int num, r, t,i,flag;while (scanf("%d",&num)!=EOF){cin >> r;getchar();if (num < 0){flag = 0;num = -num;}if (r <=10){int a[50];int k = 0;for (i = 0; num != 0; i++){t = num%r;num = num / r;a[i] = t;k++;}a[i + 1] = num / t; //不要漏掉最后一位余数if (flag == 0)cout << "-";for (i = k - 1; i >= 0; i--){cout << a[i];if (i == 0)cout << endl;}flag = 1;}else{int a[50];int k = 0;for (i = 0; num != 0; i++){t = num%r;num = num / r;a[i] = t;k++;}a[i + 1] = num / t;if (flag == 0)cout << "-";for (i = k - 1; i >= 0; i--){if(a[i]<10)cout << a[i];if (a[i] >= 10){switch (a[i]){case 10:cout << "A"; break;case 11:cout << "B"; break;case 12:cout << "C"; break;case 13:cout << "D"; break;case 14:cout << "E"; break;case 15:cout << "F"; break;}}if (i == 0)cout << endl;}flag = 1;}}}
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: