社区讨论

进制转换 0分

学术版参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mi86e28l
此快照首次捕获于
2025/11/21 09:22
4 个月前
此快照最后确认于
2025/11/21 09:22
4 个月前
查看原帖
(非洛谷题目)
题目描述 Description
给出一个位数B,以及一个进制K和一个进制J。首先找出在进制K下的一个最大的位数为B的数字,然后将这个K进制数字转化为J进制来表示。
输入描述 Input Description
输入为三个数字,分别为:位数B,进制K,进制J。之间用空格隔开,输入为一行。
输出描述 Output Description
输出为两行,两个数字,第一行是K进制下最大的B位数,第二行是这个数字转化为J进制下的数字。
样例输入 Sample Input
2 2 10
样例输出 Sample Output
11 3
数据范围及提示 Data Size & Hint
1<=B, K, J<=10
??请问为什么0分
code:
CPP
#include<iostream>
#include<sstream>
#include<cmath>
using namespace std;
int b,k,j,temp,num,ans[100],x;
string s;
int main()
{
	ios::sync_with_stdio(0);
	cin>>b>>k>>j;
	for(int i=0;i<b;i++)
	{
		cout<<k-1;
		num=num*10+k-1;
	}
	cout<<' ';
	stringstream ss;
	ss<<num;
	ss>>s;
	num=0;
	for(int i=s.size()-1;i>=0;--i)
	{
		num+=(s[i]-'0')*pow(b,temp);
		temp++;
	}
	while(num)
	{
		ans[x]=num%j;
		num/=j;
		++x;
	}
	for(int i=x-1;i>=0;--i)
		cout<<ans[i];
	return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...