题解 | #进制转换2# 模板

进制转换2

https://www.nowcoder.com/practice/ae4b3c4a968745618d65b866002bbd32

#include <bits/stdc++.h>

using namespace std;

string convert(string s, int m, int b) {
    string ans; 
    while (!s.empty()) {
        int k = 0;
        bool leadingZero = true;
        string temp;
        for (int i = 0; i < s.size(); i++) {
            int digit = (isdigit(s[i]) ? s[i] - '0' : s[i] - 'A' + 10);
            int t = (k * m + digit) % b;
            int quotient = (k * m + digit) / b;
            k = t;
            if (quotient != 0 || !leadingZero) {
                temp += (quotient < 10 ? quotient + '0' : quotient - 10 + 'A');
                leadingZero = false;
            }
        }
        ans += (k < 10 ? k + '0' : k - 10 + 'A');
        s = temp;
    }
    reverse(ans.begin(), ans.end());
    return ans.empty() ? "0" : ans;
}



int main(){
	int m,n;
	string s;
	
	cin >> m >> n;
	cin >> s;
	
	string answer = convert(s,m,n);	
	cout << answer << endl;
	return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
04-23 19:42
点赞 评论 收藏
分享
大摆哥:刚好要做个聊天软件,直接让你帮他干活了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务