zoukankan      html  css  js  c++  java
  • [ACM] hdu 2031 进制转换

    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
    

    Author

    lcy

    解题思路:

    使用栈,因为有负数,所以符号单独输出。

    代码:

    #include <iostream>
    #include <cmath>
    #include <stack>
    using namespace std;
    int main()
    {
        int r,n;
        while(cin>>n>>r)
        {
            int mul;
            mul=n/abs(n*1.0);
            n=abs(n*1.0);
            stack<int>s;
            while(n)
            {
                s.push(n%r);
                n/=r;
            }
            if(mul==-1)
                cout<<'-';
            while(!s.empty())
            {
                char m;
                if(s.top()>=10)
                {
                    m='A'+s.top()-10;
                    cout<<m;
                }
                else
                    cout<<s.top();
                s.pop();
            }
            cout<<endl;
        }
        return 0;
    }
    

  • 相关阅读:
    NOIP 模拟 序列操作
    LUOGU 1525 关押罪犯
    HDU2473 Junk-Mail Filter
    BZOJ 2096 Pilots
    luogu 3939 数颜色
    NOIP模拟 赌博游戏
    Unity3D
    HTML5
    Cocos2d-x——支持多触点
    Cocos2d-x——Cocos2d-x 屏幕适配总结
  • 原文地址:https://www.cnblogs.com/sr1993/p/3697971.html
Copyright © 2011-2022 走看看