打卡信奥刷题(19)用Scratch图形化工具信奥B3972 [语言月赛 202405] 二进制 题解

本文主要是介绍打卡信奥刷题(19)用Scratch图形化工具信奥B3972 [语言月赛 202405] 二进制 题解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

进制转换是经典的编程题,尤其是10进制转换为2进制。方法是拿给定的数,不断地除2,将余数放在对应的位置,剩下的数为对应数除2向下取整

[语言月赛 202405] 二进制

题目描述

在介绍十进制转二进制的篇目中,我们总会看到这样的方法:

  • 求出这个数字除以 2 2 2余数,然后将余数写在右侧,用商替换原来的数字;
  • 重复以上过程直到这个数字变为 0 0 0
  • 最后将右侧的所有余数倒序排列,得到的就是原数字的二进制形式。

小 S 也在学习二进制,不过她很懒,不想计算那么多次除法。于是她找到了你,希望你能为她写一个程序,帮助她得到上述过程中所有的余数

输入格式

一行,一个正整数 n n n,表示她想要转成二进制的数字。

输出格式

输出若干行,每一行两个数字 x i x_i xi y i y_i yi,表示第 i i i 次除法得到的商和余数。你应该保证 y i y_i yi 0 0 0 1 1 1

样例 #1

样例输入 #1

9

样例输出 #1

4 1
2 0
1 0
0 1

样例 #2

样例输入 #2

22

样例输出 #2

11 0
5 1
2 1
1 0
0 1

样例 #3

样例输入 #3

1

样例输出 #3

0 1

提示

样例 1 解释

首先, 9 = 2 × 4 + 1 9 = 2 \times 4 + 1 9=2×4+1,所以第一行输出 4 1,并令 9 9 9 变为 4 4 4
然后, 4 = 2 × 2 + 0 4 = 2 \times 2 + 0 4=2×2+0,所以第二行输出 2 0,并令 4 4 4 变为 2 2 2
接着, 2 = 2 × 1 + 0 2 = 2 \times 1 + 0 2=2×1+0,所以第三行输出 1 0,并令 2 2 2 变为 1 1 1
最后, 1 = 2 × 0 + 1 1 = 2 \times 0 + 1 1=2×0+1,所以第四行输出 0 1,并令 1 1 1 变为 0 0 0。过程结束。

样例 2 解释

首先, 22 = 2 × 11 + 0 22 = 2 \times 11 + 0 22=2×11+0,所以第一行输出 11 0,并令 22 22 22 变为 11 11 11
然后, 11 = 2 × 5 + 1 11 = 2 \times 5 + 1 11=2×5+1,所以第二行输出 5 1,并令 11 11 11 变为 5 5 5
接着, 5 = 2 × 2 + 1 5 = 2 \times 2 + 1 5=2×2+1,所以第三行输出 2 1,并令 5 5 5 变为 2 2 2
再然后, 2 = 2 × 1 + 0 2 = 2 \times 1 + 0 2=2×1+0,所以第四行输出 1 0,并令 2 2 2 变为 1 1 1
最后, 1 = 2 × 0 + 1 1 = 2 \times 0 + 1 1=2×0+1,所以第五行输出 0 1,并令 1 1 1 变为 0 0 0。过程结束。

数据范围

对于前 30 % 30 \% 30% 的数据,保证 n n n 为若干个 2 2 2 的乘积,且 1 ≤ n ≤ 1 0 9 1 \leq n \leq 10^9 1n109
对于另 30 % 30 \% 30% 的数据,保证除法最多只进行 3 3 3 次;
对于 100 % 100 \% 100% 的数据,保证 1 ≤ n ≤ 1 0 18 1 \leq n \leq 10^{18} 1n1018

Scratch实现

在这里插入图片描述
接下来我会不断用scratch来实现信奥比赛中的算法题,感兴趣的请关注,我后续将继续分享相关内容

这篇关于打卡信奥刷题(19)用Scratch图形化工具信奥B3972 [语言月赛 202405] 二进制 题解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1004892

相关文章

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

MySQL慢查询工具的使用小结

《MySQL慢查询工具的使用小结》使用MySQL的慢查询工具可以帮助开发者识别和优化性能不佳的SQL查询,本文就来介绍一下MySQL的慢查询工具,具有一定的参考价值,感兴趣的可以了解一下... 目录一、启用慢查询日志1.1 编辑mysql配置文件1.2 重启MySQL服务二、配置动态参数(可选)三、分析慢查

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

Go语言使用sync.Mutex实现资源加锁

《Go语言使用sync.Mutex实现资源加锁》数据共享是一把双刃剑,Go语言为我们提供了sync.Mutex,一种最基础也是最常用的加锁方式,用于保证在任意时刻只有一个goroutine能访问共享... 目录一、什么是 Mutex二、为什么需要加锁三、实战案例:并发安全的计数器1. 未加锁示例(存在竞态)

C语言自定义类型之联合和枚举解读

《C语言自定义类型之联合和枚举解读》联合体共享内存,大小由最大成员决定,遵循对齐规则;枚举类型列举可能值,提升可读性和类型安全性,两者在C语言中用于优化内存和程序效率... 目录一、联合体1.1 联合体类型的声明1.2 联合体的特点1.2.1 特点11.2.2 特点21.2.3 特点31.3 联合体的大小1