5 条题解

  • 0
    @ 2025-3-21 11:25:55
    /*
    思路
        思路一:
            1. string先接收再char数组接收
            2. 每一位的数字乘以它的(数位减一次方)
    */
    /*改进
    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        string str;
        int n;
        cin >> str >> n;
        vector<char> ch;
        for ( char c : str ) {
            ch.push_back(c);
        }
        vector<char> chs(ch.size());
        int j = 0;
        for ( int i = ch.size()-1; i >= 0; i-- ) {
            chs[j] = ch[i];
            j++;
        }
        int count = 0;
        for ( size_t i = 0; i < chs.size(); i++ ) {
            count += (chs[i] - 48) * pow(n,i);
            
        }
        cout << count << endl;
    
    
        return 0;
    }*/
    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        string numStr;
        int base;
        cin >> numStr >> base;
    
        //创建动态数组 digits(数位)
        vector<char> digits(numStr.size());
        for ( size_t i = 0; i < digits.size(); i++ ) {
            digits[i] = numStr[numStr.size()-1-i];
        }
    
        //计算进制
        int result = 0;
        int power = 1;
        for ( size_t i = 0; i < digits.size(); i++ ) {
            if ( digits[i] >= 'A' && digits[i] <= 'F' ) {
                result += (digits[i] - 'A' + 10) * power;
            }else {
                result += (digits[i] - '0') * power;
            }
            power *= base;
        }
    
        cout << result << endl;
    
        return 0;
    }
    
    • 0
      @ 2025-3-18 20:42:32
      #include <bits/stdc++.h>
      #define endl '\n'
      using namespace std;
      typedef pair<int,int> aII;  
      using ll = long long;
      using ULL = unsigned long long;
      const int N = 1e6+5;
      
      ll m;
      string n;
      inline void solve() { 
          cin >> n >> m;
          ll res = 0;
          for (auto &i: n) {
              res = res * m + (isdigit(i)? i - '0' : i - 'A' + 10);
          }
          cout << res << endl;
      }
      int main() { 
          ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
          int _ = 1; 
          //int _; cin >> _;
          while (_--) solve();
          return 0;
      }
      
      • 0
        @ 2025-2-6 11:54:15
        // https://dashoj.com/p/96
        #include <bits/stdc++.h>
        
        using namespace std;
        typedef long long ll;
        
        string s;
        int base, power = 0;
        ll result = 0;
        
        int main() {
        	cin >> s >> base;
        	for (int i = s.size() - 1; i >= 0; i--) {
        		int value;
        		if (isdigit(s[i])) value = s[i] - '0';
        		else value = s[i] - 'A' + 10;
        		result += value * pow(base, power);
        		power++;
        	}
        	cout << result << endl;
        	return 0;
        }
        
        • 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
            难度
            4
            标签
            递交数
            407
            已通过
            187
            上传者