5 条题解
-
0
/* 思路 思路一: 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
#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
// 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
用 1001 分别以二进制、八进制、十六进制转成十进制
-
二进制 1001 转十进制
-
八进制 1001 转十进制
-
十六进制 1001 转十进制
对于小数, 则是
输入一个 进制数, 把它转化为 十进制!
#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
#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
- 上传者