题解 | #进制转换#

进制转换

https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6

#include <cmath>
#include <cstdlib>
#include <iostream>
#include <math.h>
#include <ostream>
#include <sstream>
#include <string>
using namespace std;

int main() {
   
    string str, real;
    getline(cin, str);
    real = str.substr(2);

    int length = real.length();
    int max_pow = length - 1;
    int trans = 0, c = 0, a = 0;
    for (int i = 0; i <= max_pow; i++) {
   
        switch (real[i]) {
            case 'a':
            case 'b':
            case 'c':
            case 'd':
            case 'e':
            case 'f':
                c = (int)real[i] - 87;
                break;

            case 'A':
            case 'B':
            case 'C':
            case 'D':
            case 'E':
            case 'F':
                c = (int)real[i] - 55;
                break;

            case '0':
            case '1':
            case '2':
            case '3':
            case '4':
            case '5':
            case '6':
            case '7':
            case '8':
            case '9':

                c = (int)real[i] - 48;

                break;

            default:
                break;
        }

        a = c * pow(16,  max_pow - i);
        trans += a;
        }
    cout << trans;

}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

10-30 22:18
已编辑
毛坦厂中学 C++
点赞 评论 收藏
分享
牛客737698141号:他们可以看到在线简历的。。。估计不合适直接就拒了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务