zoukankan      html  css  js  c++  java
  • [NOIP2000]进制转换

    题目描述

    我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式。例如:123可表示为 1 imes 10^2+2 imes 10^1+3 imes 10^01×102+2×101+3×100 这样的形式。

    与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数字所处位置的(值-1)为指数,以2为底数的幂之和的形式。一般说来,任何一个正整数R或一个负整数-R都可以被选来作为一个数制系统的基数。如果是以R或-R为基数,则需要用到的数码为 0,1,....R-1。例如,当R=7时,所需用到的数码是0,1,2,3,4,5和6,这与其是R或-R无关。如果作为基数的数绝对值超过10,则为了表示这些数码,通常使用英文字母来表示那些大于9的数码。例如对16进制数来说,用A表示10,用B表示11,用C表示12,用D表示13,用E表示14,用F表示15。

    在负进制数中是用-R 作为基数,例如-15(十进制)相当于110001(-2进制),并且它可以被表示为2的幂级数的和数:

    110001=1 imes (-2)^5+1 imes (-2)^4+0 imes (-2)^3+0 imes (-2)^2+0 imes (-2)^1 +1 imes (-2)^0110001=1×(2)5+1×(2)4+0×(2)3+0×(2)2+0×(2)1+1×(2)0

    设计一个程序,读入一个十进制数和一个负进制数的基数, 并将此十进制数转换为此负进制下的数:-R∈{-2,-3,-4,...,-20}

    输入输出格式

    输入格式:

    输入的每行有两个输入数据。

    第一个是十进制数N(-32768<=N<=32767); 第二个是负进制数的基数-R。

    输出格式:

    结果显示在屏幕上,相对于输入,应输出此负进制数及其基数,若此基数超过10,则参照16进制的方式处理。

    输入输出样例

    输入样例#1: 复制
    30000 -2
    输出样例#1: 复制
    30000=11011010101110000(base-2)
    输入样例#2: 复制
    -20000 -2
    输出样例#2: 复制
    -20000=1111011000100000(base-2)
    输入样例#3: 复制
    28800 -16
    输出样例#3: 复制
    28800=19180(base-16)
    输入样例#4: 复制
    -25000 -16
    输出样例#4: 复制
    -25000=7FB8(base-16)














    说明

    NOIp2000提高组第一题


    【题解】通过观察与经验,我们可以发现每位的数都是n%r 得到的

    这与正进制的算法是一样的,我们不难知道在做短除法的时候,会有个除法。

    比如-3/-2=2这是正确的 因为 -2*2+1=-3 即-3%-2=1

    但计算机在计算的时候会得-3/-2=1 这时就需要特判了

    #include<cstdio>
    char s[]="0123456789ABCDEFGHIJKLMN";
    void print(int n,int r) {
    	if(n==0)return;
    	if(n>0||n%r==0)
    		print(n/r,r);
    	else
    		print(n/r+1,r);
    	putchar(s[(n%r-r)%-r]);
    }
    
    int main() {
    	int n,r;
    	scanf("%d%d",&n,&r);
    	printf("%d=",n);
    	print(n,r);
    	printf("(base%d)",r);
    	return 0;
    }






















  • 相关阅读:
    Linux常用命令-centos
    USACO 2006 Open, Problem. The Country Fair 动态规划
    USACO 2007 March Contest, Silver Problem 1. Cow Traffic
    USACO 2007 December Contest, Silver Problem 2. Building Roads Kruskal最小生成树算法
    USACO 2015 February Contest, Silver Problem 3. Superbull Prim最小生成树算法
    LG-P2804 神秘数字/LG-P1196 火柴排队 归并排序, 逆序对
    数据结构 并查集
    浴谷国庆集训 对拍
    1999 NOIP 回文数
    2010 NOIP 普及组 第3题 导弹拦截
  • 原文地址:https://www.cnblogs.com/kcfzyhq/p/8475588.html
Copyright © 2011-2022 走看看