社区讨论
MnZn刚学OI第1天 求大佬指教 qwq
SP870 BASE - Basically Speaking参与者 3已保存回复 11
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 11 条
- 当前快照
- 1 份
- 快照标识符
- @lo16az6y
- 此快照首次捕获于
- 2023/10/22 15:54 2 年前
- 此快照最后确认于
- 2023/11/02 15:29 2 年前
CPP
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int char_to_int(char c) {//将字符转换为数字
if(c>='0'&&c<='9') return c-'0';
return c-'A'+10;
}
int pre_invert(int num,int digital,int base)//计算当前位置所表示的数
{
return num*(pow(base,digital));
}
string str;
char c[1010];
int n_to_10(string str,int n)//将n进制数转化为10进制数
{
int ans=0;
int len=str.size();
for(int i=len-1;i>=0;i--)
c[len-1-i]=char_to_int(str[i]);
for(int i=0;i<=len;i++)
ans+=pre_invert(c[i],i,n);
return ans;
}
string dic="0123456789ABCDEF";
string _10_to_m(int num, int m)//将10进制数转化为m进制数
{
string ans="";
while(num!=0) //模拟短除法
{
ans+=dic[num%m];
num/=m;
}
string turn=""; //倒取余数
for (int i = ans.length()-1; i >= 0; i--)
turn += ans[i];
return turn;
}
bool check(string qwq)
{
if(qwq.size()-1>7) return 0;
else return 1;
}
int n,m;
int main() {
while(cin>>str>>n>>m)
{
string answer=_10_to_m(n_to_10(str,n),m);
if(check(answer))printf("%7s\n",answer.c_str());//t要以7右对齐输出
else printf(" ERROR\n");
}
return 0;
}
回复
共 11 条回复,欢迎继续交流。
正在加载回复...