社区讨论
进制转换求助
学术版参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mi86fwz2
- 此快照首次捕获于
- 2025/11/21 09:24 4 个月前
- 此快照最后确认于
- 2025/11/21 09:24 4 个月前
题目描述 Description
李明在做进制转换的问题时,由于粗心,在将一个二进制数转化为三进制数的过程中写错了一位数字。现在给出他转化为三进制的结果,试写出最大的和最小的可能的二进制结果。三进制数的最高位不会是0。
输入描述 Input Description
一个三进制形式下的数字
输出描述 Output Description
输出最大和最小的可能二进制形式下的结果,每行一个
样例输入 Sample Input
222
样例输出 Sample Output
11001
10001
??? 样例正确,提交0分
code
CPP#include<iostream>
#include<cmath>
using namespace std;
string s3,s2,k;
long long s10;
int temp=1,n;
int main()
{
ios_base::sync_with_stdio(0);
cin>>s3;
k=s3;
int l3=s3.size();
// s3_max
if(k[0]==0)
while(k[l3-n]==0&&n<13)
{
if(k[l3-n-1]==0&&l3-n>=1)
k[l3-n-1]--;
else n++;
}
else k[0]++;
for(int i=0;i<l3;i++)
{
s10+=(k[i]-'0')*temp;
temp*=3;
}
while(s10)
{
s2=char(s10%2+'0')+s2;
s10>>=1;
}
cout<<s2<<endl;
// s3_min
k=s3,temp=1,s10=0,s2="";
l3=k.size();
if(k[l3-1]==0)
while(k[n]==0&&n+1<l3)
{
if(k[n+1]&&n+1<l3)
k[n+1]--;
else
n++;
}
else
k[l3-1]--;
for(int i=0;i<l3;i++)
{
s10+=(k[i]-'0')*temp;
temp*=3;
}
while(s10)
{
s2=char(s10%2+'0')+s2;
s10>>=1;
}
cout<<s2;
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...