社区讨论
75求助,点2WA,代码清晰易懂
B2143进制转换参与者 3已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @m06vi14m
- 此快照首次捕获于
- 2024/08/23 23:35 2 年前
- 此快照最后确认于
- 2025/11/04 22:36 4 个月前
看了题解知道这题是用短除法了,但是为什么我代码点2WA了哇
CPP#include<bits/stdc++.h>
using namespace std;
#define int long long
int mi[50];//每位代表的数预处理
int x,m;
char pt[7]={0,'A','B','C','D','F','E'};
int ans[50];
int hi;//最高位
int po(int i){
return mi[i];
}
void print(){
for(int i=hi;i>=1;i--){
if(ans[i]<=10)
cout<<ans[i];
else
cout<<pt[ans[i]%10];
}
cout<<"\n";
}
void f(int i){//位数
//cout<<i<<" "<<x<<"\n";
if(x>po(i)*(m-1))
f(i+1);
else{
hi=i;
}
int n=x/po(i);
ans[i]=n;
x-=po(i)*n;
//cout<<i<<" "<<n<<" "<<x<<"\n";
}
signed main(){
cin>>x>>m;
memset(ans,-1,sizeof(ans));
int s=1;
for(int i=1;s<=pow(10,9);i++){
mi[i]=s;
s*=m;
//cout<<mi[i]<<" ";
}
f(1);
print();
}
回复
共 6 条回复,欢迎继续交流。
正在加载回复...