#include <cstdio>
#include <iostream>
#include <cstring>
#include <iostream>
using namespace std;
typedef long long LL;
LL inf = (1LL<<63) - 1; // 2^63 - 1 long long int 的最大值范围
int Map[256];
char num[20];
int base;
void init(){
for(char c = '0'; c <= '9'; c++){
Map[c] = c - '0'; // 将 '0' ~ '9' 映射到 0 ~ 9
}
for(char c = 'a'; c <= 'z'; c++){
Map[c] = c - 'a' + 10; // 将 'a' ~ 'z' 映射到 10 ~ 35
}
}
LL convertNum10(char a[], int base, LL t){
LL ans = 0;
for(int i = 0 ; i < strlen(a); i++){
ans = ans * base + Map[a[i]];
if(ans > t){
return -1;
}
}
return ans;
}
int main(){
init(); // 别忘初始化
scanf("%s %d", num, &base);
printf("%lld\n", inf);
printf("%lld", convertNum10(num, base, inf));
return 0;
}
任意进制转十进制
最新推荐文章于 2023-03-04 22:35:55 发布