zoukankan      html  css  js  c++  java
  • 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
    ****************************************************/
  • 相关阅读:
    用户故事——老师
    用户故事——学生
    用户故事——管理员
    WebStorm 2018 最新激活码 license server
    vue cli 4.3.1版本脚手架 新人请看系列
    iviewtable表格数据 录音播放下载
    git修改远程仓库地址
    git上传提交个人心得
    layui 数据拆分 重组数据
    日志
  • 原文地址:https://www.cnblogs.com/jkxsz2333/p/9487844.html
Copyright © 2011-2022 走看看