题解分享
题解分享简介
K进制转十进制 - 题解
```
/*
思路
思路一:
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
0
0
7
K进制转十进制 - 题解
```
#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
0
0
4
K进制转十进制 - 题解
```cpp
// 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
0
0
3
K进制转十进制 - 题解
用 1001 分别以二进制、八进制、十六进制转成十进制
- 二进制 1001 转十进制
- $1 2^{0}+0 2^{1}+0 2^{2}+1 2^{3}$
- 八进制 1001 转十进制
- $1 8^{0}+0 8^{1}+0 8^{2}+1 8^{3}$
- 十六进制 1001 转十进制
- $1 16^{0}+0 16^{1}+0 16^{2}+1 16^{3}$
对于小数, 则是 $a K^{-1} + a K^{-2} + ...$
输入一个 $x$ 进制数, 把它转化为 十进制!
```cpp
#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
0
0
2
K进制转十进制 - 题解
include
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;
}
查看全文
0
0
0
2



