2 条题解

  • 0
    @ 2024-4-7 15:44:43

    用 1001 分别以二进制、八进制、十六进制转成十进制

    • 二进制 1001 转十进制

      • 120+021+022+1231 * 2^{0}+0 * 2^{1}+0 * 2^{2}+1 * 2^{3}
    • 八进制 1001 转十进制

      • 180+081+082+1831 * 8^{0}+0 * 8^{1}+0 * 8^{2}+1 * 8^{3}
    • 十六进制 1001 转十进制

      • 1160+0161+0162+11631 * 16^{0}+0 * 16^{1}+0 * 16^{2}+1 * 16^{3}

    对于小数, 则是 aK1+aK2+...a * K^{-1} + a * K^{-2} + ...

    输入一个 xx 进制数, 把它转化为 十进制!

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main() {
    	string str;
    	int jz;
    	cin >> str >> jz;
    	
    	long long res = 0;
    	long long k = 1;
    	for (int i = str.size() - 1; i >= 0; --i) {
    		if ('0' <= str[i] && str[i] <= '9') {
    			res += (str[i] - '0') * k;
    		} else {
    			res += (10 + str[i] - 'A') * k;
    		}
    		k *= jz;
    	}
    	
    	cout << res << endl;
    	
    	return 0;
    }
    

    信息

    ID
    96
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    163
    已通过
    86
    上传者