题解 | #八进制# 模板无敌了

八进制

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

#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++) {
        	// 如果是字母字符(用于大于10的进制),则转换为对应的值,如'A' -> 10, 'B' -> 11
            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(){
	string s;
	
	while(cin >> s){
		string answer = convert(s,10,8);	
		cout << answer << endl;
	}
	
	return 0;
}

全部评论

相关推荐

03-03 23:12
已编辑
北京邮电大学 Java
书海为家:我来给一点点小建议,因为毕竟还在学校不像工作几年的老鸟有丰富的项目经验,面试官在面试在校生的时候更关注咱们同学的做事逻辑和思路,所以最好在简历中描述下自己做过项目的完整过程,比如需求怎么来的,你对需求的解读,你想到的解决办法,遇到困难如何找人求助,最终项目做成了什么程度,你从中收获了哪些技能,你有什么感悟。
你的简历改到第几版了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务