【11年特长生第一题】工具软件

本文介绍了一种进制转换程序的设计与实现,该程序能够将任意m进制数x转换为n进制数P,通过先将源进制数转换为十进制,再由十进制转换为目标进制的方式实现。文章提供了完整的C++代码示例,包括输入输出文件的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工具软件工具软件


题目

大家都知道任何数据、符号在计算机中都是以二进制的形式表示的。小明是某软件公司的工程师,公司应客户的需要,要开发一个小工具程序,用来实现任意进制之间的转换。可以将给定的m进制数x转化为n进制的P(所有数数据均能在长整型范围内处理)。现在也将这个任务交给你,请你来完成这个程序


输入

从文件tool.intool.intool.in中读入数据,文件中只有一行,共有三个数x,m,n(2<=m,n<=10)x,m,n(2<=m,n<=10)x,m,n(2<=m,n<=10)

输出

将结果输出到tool.outtool.outtool.out中,输出文件中只有一个数,那就是转换后的结果PPP


输入样例

tool.in
48  10  8

输出样例

tool.out
60

解题思路

这题我们直接模拟,然后先把当前的数转换为十进制后再转化即可

程序如下

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>

using namespace std;

int x, m, n, ans, r, sum;

void cc(int xx)
{
    if (xx == 0) return;
    cc(xx / n);
    ans = xx % n;
    printf("%d", ans);
}

int c(int xx)
{
    r = 1;
    while(xx > 0)
    {
        sum += (xx % 10) * r;
        r *= m;
        xx /= 10;
    }
    return sum;
}
int main()
{
	freopen("tool.in","r",stdin);
	freopen("tool.out","w",stdout);
	scanf("%d%d%d",&x,&m,&n);
	if(m != 10) x = c(x);
	cc(x);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值