【牛客网】进制转换oj

    xiaoxiao2022-07-14  189

    题目描述:给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数 输入描述: 输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。 输出描述: 为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等) 示例1 输入 7 2 输出 111

    方法:

    除以N得到的余数就是了。 例如7这个十进制的数,除以2的余数是1商是3,这样二进制最后一位就是1,然后用3再除以2,然后得到余数1,商是1,这样的话,二进制就是111了。 同理,10可以这样除以2的话,就先得到余数是0和商是5,然后5就得到余数是1商是2,然后2除以2就得到余数是0商是1,这样的话,就得到1010这个二进制数了。

    #include<iostream> using namespace std; int main() { //s表示通过进制转换后M的N进制数 string s = ""; string tables = "0123456789ABCDEF";//从二进制到十六进制的数的集合 //输入某个数M,和需要转换的进制N int M = 0; int N = 0; cin >> M >> N; if (M == 0) { s = "0"; } while (M) { if (M < 0) { M = -M; cout << "-"; } s = tables[M%N] + s; M /= N; } cout << s.c_str() << endl; return 0; }
    最新回复(0)