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;
    }
    
    • 0
      @ 2024-4-7 15:15:17

      #include <bits/stdc++.h>

      using namespace std; int main(){ string s; long long ans=0;//必须让自定义函数等于0 否则就会再下列计算中 自己加上自己的asall值 int k=0, base=0; cin>> s >> base;

      for ( int i=s.size()-1;i>=0; i--){ //缺失了条件 if (s[i]>='A' ){ ans += ( s[i]-'A'+10 )* pow( base, k++); } else { ans += (s[i]-'0')* pow( base,k++); }

      } cout << ans<<endl;

      return 0;
      

      }

      • 1

      信息

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