题目描述

我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式。例如:123可表示为 1\times 10^2+2\times 10^1+3\times 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\times (-2)^5+1\times (-2)^4+0\times (-2)^3+0\times (-2)^2+0\times (-2)^1 +1\times (-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)

别看题目这么长,其实主要讲的就是怎么去转换进制。只不过这道题要转换成负进制而已。
首先我们就是按不同的进制转换转化,但发现结果中的有些位置上的数会出现负数,这当然不行了。所以我们在这一位出现负数的时候,就要管前一位借一位,让他变成正数。

 

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<cmath>
 6 using namespace std;
 7 typedef long long ll;
 8 int n, base, ans[100], pos = 0;
 9 int main()
10 {
11     freopen("t1.in","r",stdin);
12     freopen("t1.out","w",stdout);
13     scanf("%d%d", &n, &base);
14     printf("%d=", n);
15     while(n)
16     {
17         ans[++pos] = n % base;
18         n /= base;
19         if(ans[pos] < 0)
20         {
21             n++;
22             ans[pos] -= base;        //因为是负数,就相当于加上该进制(绝对值)
23         }
24     }
25     for(int i = pos; i >= 1; --i)
26         if(ans[i] < 10) printf("%d", ans[i]);
27         else printf("%c", 'A' + ans[i] - 10);
28     printf("(base%d)\n", base);
29     return 0;
30 }

转载于:https://www.cnblogs.com/mrclr/p/8719098.html

NOIP 2000 进制转换相关推荐

  1. 杭电2031进制转换

    进制转换 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  2. linux 大数字 进制转换,Linux下用bc快速进行数字进制转换

    介绍如何在Linux下用bc命令进行快速的数字进制转换. 我想Windows里,数字进制转换最方便的就是自带的calc计算器,但是它原没有我们可爱的Linux方便.Linux下,我们在term里敲 几 ...

  3. 洛谷——P2084 进制转换

    P2084 进制转换 题目背景 无 题目描述 今天小明学会了进制转换,比如(10101)2 ,那么它的十进制表示的式子就是 : 124+0*23+122+0*21+1*2^0, 那么请你编程实现,将一 ...

  4. C语言32位正整数作为id进程,SOJ4453 Excel列数 进制转换

    描述 我们都知道Excel的列数是用字母表示的,比如第1列对应A,第27列对应AA. 假设给定一个正整数n,你能给出它所对应的字母表示么? 输入格式 程序需要读入多个测试样例,每个测试样例中: 一个正 ...

  5. 进制转换(进制转换)

    进制转换 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  6. 基于MATLAB的进制转换

    1.常用进制转换方法(除k取余法) (1)十进制与二进制之间的转换 方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商 ...

  7. (HDU2031 C++) 进制转换

    进制转换 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissi ...

  8. [NOIP2000]进制转换

    链接:登录-专业IT笔试面试备考平台_牛客网 来源:牛客网 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的值减1为指数,以10为底数的幂之和的形式.例如:123可 ...

  9. hdoj 2031 进制转换

    进制转换 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissi ...

最新文章

  1. 从1G到5G,从回顾过去到展望未来
  2. 一文带你深入理解JVM内存模型
  3. 【uoj#139】[UER #4]被删除的黑白树 贪心
  4. 【python】入门指南:控制语句
  5. LeetCode 110 Balanced Binary Tree(平衡二叉树)(*)
  6. 使用python制作聊天框解谜游戏_使用Python写一个小游戏alien invasion!
  7. 使用MonoDevelop开发跨平台的应用程序
  8. 率土之滨显示未选择服务器怎么办,率土之滨未转服,为什么要转服
  9. net软件安装后不能卸载的解决方法
  10. 8种经典的统计学悖论18种经典的哲学悖论
  11. android 自由落体,自由落体手游
  12. (实测有用)登录Github显示“您的连接不是专用连接”和”GitHub.com拒绝了我们的连接请求“解决办法!!!
  13. linux下nginx配置访问静态图片的解决办法
  14. 300英雄11月服务器维护,300英雄11月7日更新了什么?300英雄11月7日更新内容一览...
  15. 学习笔记(十)在网页中添加矢量图形
  16. Keil_MDK 中绝对地址定位问题
  17. 公众号降权了可以养好嘛,微信公众号降权了多久能恢复
  18. 网易云音乐部门技术面
  19. python取前三位_python的字符串截取||取字符串前三位
  20. latex安装报错-failed: No such file or directory at G://tlpkg/TeXLive/TLUtils.pm line 1383, <STDIN> line

热门文章

  1. opencv学习笔记06
  2. Queue - 一种线程安全的FIFO实现
  3. nasa和linux的关系,跟美国NASA毅力号登陆火星的Linux是一个无图形的纯命令行系统...
  4. 一个大数据平台省了20个IT人力——敦奴数据平台建设案例分享
  5. php注册 绑定的容器,php – 将Eloquent模型绑定到服务容器
  6. php 获取域名_在PHP中截取当前页面URL地址及URL信息的方法
  7. python不等于缺陷
  8. 行星齿轮设计_3D打印用于制造刚度平衡的行星架
  9. insert批量插入500ms_不吹牛!Mysql 千万数据10秒批量插入只需三步
  10. 是指能够被程序员看到的计算机系统的属性,计算机组成原理复习范围详细.doc...