洛谷——P1143 进制转换

P1143 进制转换

题目描述

请你编一程序实现两种不同进制之间的数据转换。

输入输出格式

输入格式:

输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10则用大写字母A~F表示数码10~15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)。

输出格式:

输出仅一行,包含一个正整数,表示转换之后的m进制数。

输入输出样例

输入样例#1: 复制

16
FF
2

输出样例#1: 复制

11111111

模拟在转化的时候忘记考虑他要转化成10+进制的情况了;
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 50
using namespace std;
int n,m,s,x,sum;
char ch[N],ans[N];
int read()
{
    int x=0,f=1; char ch=getchar();
    while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}
    while(ch>=‘0‘&&ch<=‘9‘) x=x*10+ch-‘0‘,ch=getchar();
    return x*f;
}
int main()
{
    n=read();
    cin>>ch+1;
    int l=strlen(ch+1);
    for(int i=1;i<=l;i++)
    {
        if(ch[i]>=‘0‘&&ch[i]<=‘9‘) x=ch[i]-‘0‘;
        else x=ch[i]-‘A‘+10;
        sum=sum*n+x;
    }
    m=read();
    while(sum)
    {
        x=sum%m;
        if(x>9) ans[++s]=x-10+‘A‘;
        else ans[++s]=x+‘0‘;
        sum/=m;
    }
    for(int i=s;i>=1;i--)
     printf("%c",ans[i]);
}
时间: 2024-11-10 06:02:30

洛谷——P1143 进制转换的相关文章

洛谷P1143 进制转换

题目描述 请你编一程序实现两种不同进制之间的数据转换. 输入输出格式 输入格式: 输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10则用大写字母A-F表示数码10-15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16). 输出格式: 输出仅一行,包含一个正整数,表示转换之后的m进制数. 输入输出样例 输入样例#1: 复制 16 FF 2 输出样例#1: 复制 11

洛谷1017 进制转换

洛谷1017 进制转换 本题地址:http://www.luogu.org/problem/show?pid=1017 思路: 其实和普通的进制转换一样,只是要转换成负进制时,余数可能为负数.因此只要多加一个判断余数是否为负数,当余数为负数时,余数自减除数,商自增即可. 1 #include <cstdio> 2 #include <stack> 3 using namespace std; 4 void work(int n, int m) 5 { 6 int t; 7 stac

洛谷P1017 进制转换

P1017 进制转换 题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1\times 10^2+2\times 10^1+3\times 10^01×10?2??+2×10?1??+3×10?0??这样的形式. 与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数字所处位置的(值-1)为指数,以2为底数的幂之和的形式.一般说来,任何一个正整数R或一个负整数-R都可以被选

[NOIP2000] 提高组 洛谷P1017 进制转换

题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1*10^2+2*10^1+3*10^0这样的形式. 与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数字所处位置的(值-1)为指数,以2为底数的幂之和的形式.一般说来,任何一个正整数R或一个负整数-R都可以被选来作为一个数制系统的基数.如果是以R或-R为基数,则需要用到的数码为 0,1,....R-1.例如,当R=7时

数学方法模拟(洛谷1017 进制转换NOIp2000提高组第一题)

我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1*10^2+2*10^1+3*10^0这样的形式. 与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数字所处位置的(值-1)为指数,以2为底数的幂之和的形式.一般说来,任何一个正整数R或一个负整数-R都可以被选来作为一个数制系统的基数.如果是以R或-R为基数,则需要用到的数码为 0,1,....R-1.例如,当R=7时,所需用到

洛谷 P1017 进制转换

题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 这样的形式. 与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数字所处位置的(值-1)为指数,以2为底数的幂之和的形式.一般说来,任何一个正整数R或一个负整数-R都可以被选来作为一个数制系统的基数.如果是以R或-R为基数,则需要用到的数码为 0,1,....R-1.例如,当R=7时,所需用到的数码是0,1,2,3,4,5

洛谷—— P1017 进制转换

https://www.luogu.org/problem/show?pid=1017#sub 题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 这样的形式. 与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数字所处位置的(值-1)为指数,以2为底数的幂之和的形式.一般说来,任何一个正整数R或一个负整数-R都可以被选来作为一个数制系统的基数.如果是以R或-R为基数,则需

洛谷P1013 进制位

P1013 进制位 题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: + L K V E L L K V E K K V E KL V V E KL KK E E KL KK KV 其含义为: L+L=L,L+K=K,L+V=V,L+E=E K+L=K,K+K=V,K+V=E,K+E=KL …… E+E=KV 根据这些规则可推导出:L=0,K=1,V=2,E=3 同时可以确定该表表示的是4进制加法 //感谢lxylxy123456同学为本

noip 1998 洛谷P1013 进制位

题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: L K V E L L K V E K K V E KL V V E KL KK E E KL KK KV 其含义为: L+L=L,L+K=K,L+V=V,L+E=E K+L=K,K+K=V,K+V=E,K+E=KL …… E+E=KV 根据这些规则可推导出:L=0,K=1,V=2,E=3 同时可以确定该表表示的是4进制加法 //感谢lxylxy123456同学为本题新加一组数据 输入输出