【蓝桥杯刷题】坑爹的负进制转换

简介: 【蓝桥杯刷题】坑爹的负进制转换

💡前言🌞:


大伙们好!😄又到了小陈蓝桥杯每日一题的时间了~ 😋😋😋今天也带来了十分有趣的题目!🥰🥰🥰用C语言实现——坑爹的负进制转换,这个题目对我来说很有挑战性,把我折磨的很难受,不过我还是整出来了,我现在迫不及待地要和大家分享~!😄🤗🤗


💛坑爹的负进制转换题目💛


💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡💡


题目描述


以前我们做的进制转换大家都忽略了一点,就是进制一定是正整数;今天这道进制转换就坑爹的选择了,额,负整数来做进制。


输入描述


输入由若干行组成,每行有两个整数n(-32765<=n<=32767)和R(-16<=R<=-2)。输入的最后一行只有一个‘#’号,表示输入结束。


输出描述


对于每个输入行,输出n的R进制形式。出现的字母请用大写字母表示!


样例输入


30000 -2

-20000 -2

28800 -16

-25000 -16

#

样例输出


11011010101110000

1111011000100000

19180

7FB8


💪 解题思路的分享💪  


我们采用递归的写法来写这道题目。

首先我们要知道,在C语言中,商和余数都符合 被除数=商x除数+余数 这一数学规律。C/C++ 是向零取整(负数向上、正数向下取整)的。也就是说,余数可能是负数。

我们要打印出对应的负二进制,就不能有负数,所以代码中如果余数为负数,要将其变为正数。

说道递归,那就必须要有出口,我们将a==0作为递归出口,当a不停除以对应进制到零,此时递归停止。

当余数小于零时,我们该如何将其变为正数呢?例如-5/-2=2余-1,这个-1没有办法处理。

我们不能改变结果的值,那就需要一个看起来很简单但是想不到的转换公式:

(商+1)*除数+(余数-除数)=商*除数+除数+余数-除数=商*除数+余数=被除数

所以我们要保证商不变的话只要  被除数=被除数+除数,化简一下可以得到商=被除数/除数--->(被除数+除数)/除数=商+1  。

为了实现多组输入,用scanf返回值来判断输入是否正确。


😊题目源码的分享😊


#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void JinZhi(int a, int b)
{
  if (a == 0)
  return;//递归的出口
  int m = a % b;
  if (m < 0)
  {
  m -= b; a += b;
  }
  if (m > 10)
  {
  m = m - 10 + 'A';//转化成字符型,方便16进制输出成字符
  }
  else
  {
  m += '0';
  }
  JinZhi(a / b, b);
  printf("%c", m);//注意顺序,不要写到函数的前面,不然就反了
}
int main()
{
  int n[10], m[10],i=0;
  int a, b;
  while (scanf("%d%d", &a, &b) == 2)//用scanf返回值来判断输入是否正确
  {
  n[i] = a;
  m[i] = b;
  i++;
  }
  for (int j = 0; j < i; j++)
  {
  JinZhi(n[j], m[j]);
  printf("\n");
  }
  return 0;
}

👉 本菜鸡&总结 👈


这是我们学校蓝桥杯选拔赛上面的题目,我觉得很有挑战性写了这篇博客,这种题目比较耐人寻味,哪位大佬有更好的做法,请在评论区不吝赐教哦~😀如果觉得我写的不错的话还请点个赞和关注哦~我会持续输出编程的知识的!🌞🌞🌞

5658fa76c1c90a4013f39dbb414b806f_1a8d32135edbdcac9a664aac3d8c43e9.gif


相关文章
【QT】创建、打开QT项目只显示.pro文件的问题解决
【QT】创建、打开QT项目只显示.pro文件的问题解决
4560 0
|
小程序 数据安全/隐私保护
吐血整理的几十款小程序登陆界面【附完整代码】(一)
吐血整理的几十款小程序登陆界面【附完整代码】
13959 1
吐血整理的几十款小程序登陆界面【附完整代码】(一)
|
存储 SQL 分布式计算
湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
【10月更文挑战第7天】湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
1138 1
|
资源调度 JavaScript 测试技术
单元测试:编写和运行Vue组件的单元测试
【4月更文挑战第23天】本文探讨了为Vue组件编写单元测试的重要性,以及如何设置测试环境、编写和运行测试。通过使用Jest或Mocha作为测试框架,结合Vue Test Utils,可以独立测试组件的功能,如渲染、事件处理和状态管理。编写测试用例时,应注意覆盖各种行为,并使用断言验证组件状态。运行测试并观察结果,确保测试独立性和高覆盖率。单元测试是保证代码质量和维护性的关键,应随着项目发展持续更新测试用例。
459 3
|
芯片 内存技术
STM32速成笔记(十三)—低功耗模式
本文介绍了三种STM32低功耗模式的进入和退出方法,针对待机唤醒给出了程序设计。
1836 0
STM32速成笔记(十三)—低功耗模式
|
JavaScript
ElementUI 常用组件使用方法
ElementUI 常用组件使用方法
ElementUI 常用组件使用方法
|
传感器 人工智能 网络协议
MQTT.fx的安装和使用
MQTT.fx的安装和使用
6737 0
|
Kubernetes 负载均衡 Cloud Native
全面进入云原生时代,拥抱Kubernetes,再见了Spring Cloud
相信很多开发者在熟悉微服务工作后,才发现: 以为用 Spring Cloud 已经成功打造了微服务架构帝国,殊不知引入了 k8s 后,却和云原生的生态发展脱轨
26026 8
全面进入云原生时代,拥抱Kubernetes,再见了Spring Cloud
|
存储 Linux C语言
生产者消费者模式保姆级教程 (阻塞队列解除耦合性) 一文帮你从C语言版本到C++ 版本, 从理论到实现 (一文足以)
生产者消费者模式保姆级教程 (阻塞队列解除耦合性) 一文帮你从C语言版本到C++ 版本, 从理论到实现 (一文足以)
生产者消费者模式保姆级教程 (阻塞队列解除耦合性) 一文帮你从C语言版本到C++ 版本, 从理论到实现 (一文足以)
|
存储 小程序 前端开发
小程序中如何访问mysql数据库
小程序中如何访问mysql数据库
小程序中如何访问mysql数据库

热门文章

最新文章